ВУЗ:
Составители:
Рубрика:
46
3.4. Динамический SQL
При создании приложений PL/SQL часто возникает ситуация, когда
структура SQL-запросов заранее не определена и может изменяться в зави-
симости от каких-либо условий. Для решения ситуаций подобного типа
используется механизм, называемый динамический SQL. Суть этого меха-
низма заключается в том, что запросы внутри блоков PL/SQL формируют-
ся в виде текстовых строк
непосредственно во время работы программы,
что позволяет получить более широкие возможности. В частности, меха-
низм динамического SQL позволяет:
1. Выполнять операторы DDL, либо другие операторы, выполнение
которых запрещено в статическом коде PL/SQL.
2. Реализовать более гибкий подход в выполнении операторов DML
за счет их формирования «на лету».
3. Использовать функции пакета DBMS_SQL для увеличения произ-
водительности запросов.
Для выполнения запросов, которые не возвращают данных, либо
возвращают одиночную строку используется конструкция EXECUTE IM-
MEDIATE (начиная с Oracle 8i). Ее синтаксис:
EXECUTE IMMEDIATE dynamic_string
[INTO {define_variable[,
define_variable]... | record}]
[USING [IN | OUT | IN OUT] bind_argument
[, [IN | OUT | IN OUT] bind_argument]...]
[{RETURNING | RETURN} INTO
bind_argument[, bind_argument]...];
где dynamic_string – SQL-запрос либо анонимный PL/SQL блок; de-
fine_variable – переменные, через которые осуществляется связь с выпол-
няемым запросом; bind_argument – список привязываемых аргументов.
Выражение RETURNING INTO используется только для DML-выражений.
Примеры использования конструкции:
EXECUTE IMMEDIATE ’DROP TABLE :tab’
USING table_name;
3.4. Динамический SQL При создании приложений PL/SQL часто возникает ситуация, когда структура SQL-запросов заранее не определена и может изменяться в зави- симости от каких-либо условий. Для решения ситуаций подобного типа используется механизм, называемый динамический SQL. Суть этого меха- низма заключается в том, что запросы внутри блоков PL/SQL формируют- ся в виде текстовых строк непосредственно во время работы программы, что позволяет получить более широкие возможности. В частности, меха- низм динамического SQL позволяет: 1. Выполнять операторы DDL, либо другие операторы, выполнение которых запрещено в статическом коде PL/SQL. 2. Реализовать более гибкий подход в выполнении операторов DML за счет их формирования «на лету». 3. Использовать функции пакета DBMS_SQL для увеличения произ- водительности запросов. Для выполнения запросов, которые не возвращают данных, либо возвращают одиночную строку используется конструкция EXECUTE IM- MEDIATE (начиная с Oracle 8i). Ее синтаксис: EXECUTE IMMEDIATE dynamic_string [INTO {define_variable[, define_variable]... | record}] [USING [IN | OUT | IN OUT] bind_argument [, [IN | OUT | IN OUT] bind_argument]...] [{RETURNING | RETURN} INTO bind_argument[, bind_argument]...]; где dynamic_string SQL-запрос либо анонимный PL/SQL блок; de- fine_variable переменные, через которые осуществляется связь с выпол- няемым запросом; bind_argument список привязываемых аргументов. Выражение RETURNING INTO используется только для DML-выражений. Примеры использования конструкции: EXECUTE IMMEDIATE DROP TABLE :tab USING table_name; 46
Страницы
- « первая
- ‹ предыдущая
- …
- 44
- 45
- 46
- 47
- 48
- …
- следующая ›
- последняя »