2012-03-01 75 views
3

我創建了一個包含7000多行的包,我想用DBMS_DLL SUBPROGRAMS包裝它。任何人都可以請建議我的步驟?如何打包一個包

+0

+1,請問爲什麼你不把包分解成多個包? – Ben 2012-03-01 09:01:42

回答

1

假設「7000行」轉換爲大於32K,你可以這樣做

declare 
    l_sql dbms_sql.varchar2a; 
begin 
    l_sql(1) := 'CREATE OR REPLACE PACKAGE pkg_foo '; 
    l_sql(2) := 'AS '; 
    l_sql(3) := ' PROCEDURE proc_foo(col1 IN NUMBER); '; 
    l_sql(4) := 'END;'; 
    dbms_ddl.create_wrapped(l_sql, 1, 4); 
end; 

請確保您有您的外部數據庫 - 安全地存儲包的實際來源沒有辦法一旦包裹被打包,打開包裝,因此任何未來的修改都需要從未打包的源代碼開始。

+0

嗨賈斯汀,謝謝你的回覆。我必須提及l_sql(1)..... l_sql(7000)和''? – 2012-03-01 05:58:29

+0

@ Gurujothi.D - 如果你想使用'DBMS_DDL'包,並且你的DDL語句大於32K,你必須用你的DDL的各個組件構造一個類型爲'dbms_sql.varchar2a'的關聯數組。您可以選擇在數組中生成更少的元素,或者在數組中創建更多的元素,這些元素與我所做的一樣短。每行代碼中找到一個元素(所以您的案例中有7000個元素)是最易讀和最容易從存在DDL語句的文本編輯器生成的。 – 2012-03-01 06:30:30