2012-03-03 3 views

答えて

1

連想配列DBMS_SQLを使用する必要があります。「2000行」が32kを超えるテキストに相当すると仮定します。つまり、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アプリケーションを作成することは一般的ではありません。

関連する問題