21. Динамический SQL; Стандартный пакет DBMS_SQL;
Динамический SQL это методология программирования для генерации и выполнения инструкций SQL во время выполнения.
Это полезно при написании универсальных и гибких программ, таких как системы специальных запросов, при написании программ, которые должны выполнять инструкции языка определения базы данных (DDL), или когда вы не знаете во время компиляции полный текст инструкции SQL или количество или типы данных его входных и выходных переменных.
PL / SQL предоставляет два способа написания динамического SQL:
Собственный динамический SQL, язык PL / SQL (то есть родной) для построения и выполнения динамических операторов SQL
DBMS_SQL пакет, API для построения, запуска и описания динамических операторов SQL
Собственный динамический SQL-код легче читать и писать, чем эквивалентный код, использующий DBMS_SQL пакет, и работает заметно быстрее (особенно когда он может быть оптимизирован компилятором). Однако, чтобы написать собственный динамический SQL-код, вы должны знать во время компиляции количество и типы данных входных и выходных переменных инструкции dynamic SQL. Если вы не знаете эту информацию во время компиляции, вы должны использовать DBMS_SQL пакет. DBMS_SQLВы также должны использовать пакет, если хотите, чтобы сохраненная подпрограмма возвращала результат запроса неявно (не через OUT REF CURSOR.
DBMS_SQLПакет предоставляет интерфейс для использования динамического SQL для анализа любого оператора языка обработки данных (DML) или языка определения данных (DDL) с использованием PL / SQL.
Например, вы можете ввести DROP TABLEинструкцию из хранимой процедуры, используя процедуры синтаксического анализа, поставляемые с DBMS_SQLпакетом.
DBMS_SQL является SYSпринадлежащим a пакетом, скомпилированным с AUTHID CURRENT_USER. Любая DBMS_SQLподпрограмма, вызываемая из анонимного блока PL /SQL, выполняется с привилегиями текущего пользователя.
22. Язык SQL. Основы синтаксиса языка. Примеры;
Do'stlaringiz bilan baham: |