2012-03-03 1 views

ответ

1

Вам понадобится использовать ассоциативный массив DBMS_SQL, предполагая, что «2000 строк» ​​соответствует более чем 32 тыс. Значений текста. Это означает, что вам нужно будет загрузить DDL на несколько элементов ассоциативного массива, прежде чем передать его методу DBMS_SQL.PARSE. Что-то вроде этого работает

SQL> ed 
Wrote file afiedt.buf 

    1 declare 
    2 l_sql dbms_sql.varchar2a; 
    3 c  integer; 
    4 begin 
    5 l_sql(1) := 'CREATE OR REPLACE PACKAGE pkg_dynamic '; 
    6 l_sql(2) := 'AS '; 
    7 l_sql(3) := ' PROCEDURE my_proc;'; 
    8 l_sql(4) := 'END;'; 
    9 c := dbms_sql.open_cursor; 
10 dbms_sql.parse(c, l_sql, 1, 4, true, dbms_sql.native); 
11* end; 
SQL>/

PL/SQL procedure successfully completed. 

SQL> desc pkg_dynamic; 
PROCEDURE MY_PROC 

Но я бы очень сомневался, почему вы пытаетесь использовать динамический SQL для создания пакетов в первую очередь. Обычно не имеет смысла писать код, который оборачивается и генерирует больше кода. Например, вы бы не захотели написать приложение Java, которое развернулось, и написало и скомпилировало другое приложение Java, которое затем выполнило бы.

 Смежные вопросы

  • Нет связанных вопросов^_^