Oracle 如何包装一个包裹

Oracle 如何包装一个包裹,oracle,Oracle,我已经创建了一个包含7000多行代码的包,我想用DBMS_DLL子程序来包装它。有人能给我建议一下步骤吗?假设“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 );

我已经创建了一个包含7000多行代码的包,我想用DBMS_DLL子程序来包装它。有人能给我建议一下步骤吗?

假设“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;

确保您的包的实际来源安全地存储在数据库之外——一旦包被包装,就无法打开包,因此将来的任何修改都需要从打开的来源开始。

Hi Justin,谢谢你的回复。我必须提到l_sql(1)。。。。。l_sql(7000)和“”?@Gurujothi.D-如果您想使用
DBMS_DDL
包,并且您的DDL语句超过32k,则必须使用DDL的各个组件构造一个类型为
DBMS_sql.varchar2a
的关联数组。您可以选择在数组中生成更少的较长元素,或者像我一样在数组中创建更多的较短元素。我发现每行代码中有一个元素(在您的例子中是7000个元素)是最可读的,也是从存在DDL语句的文本编辑器中最容易生成的。+1,我可以问一下为什么不将包分解为多个包吗?