ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »
