IS
BEGIN
EXECUTE IMMEDIATE ddl_str;
END;
SQL> exec STUDY. ExecDDL(‘create table tmp (dt date)’);
CREATE OR REPLACE PROCEDURE execDDL (ddl_str IN VARCHAR2)
AUTHID CURRENT_USER IS
BEGIN
EXECUTE IMMEDIATE ddl_str;
END;
Сравнение возможностей NDSи пакета DBMS_SQL
Встроенный динамический SQL (NDS)
· эффективней, чем DBMS_SQL
· проще в применении, программный код короче
· работает со всеми типами данных SQL, включая пользовательские объекты и коллекции (DBMS_SQL – только типы данных, совместимые с Oracle7)
· позволяет выбирать данные из нескольких столбцов прямо в запись, а не только в отдельные переменные
· во время компиляции не известно количество запрошенных столбцов и переменных привязки
· необходимо выполнить код SQL и PL/SQL произвольной длины (для NDS – не более 32 Кбайт)
· динамический SQL требуется вызывать из клиентского кода PL/SQL, например из библиотек OracleForms
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.