我在 oracle toad 中有大约 1300 个存储过程。我想将每个存储过程保存到单独的脚本文件中,因为我需要将其更新到另一个数据库。如何执行此操作
最简单的方法就是不需要这样做。最佳实践是在编辑器中编写脚本并使用 TOAD 将它们运行到数据库中。
为什么这是最佳实践?两个字:源头控制。
但考虑到这不是你现在所处的位置,你可以使用 DBMS_METADATA.GET_DDL 来获取所有包源。 在文档中。
这是另一种方法,可以轻松地为每个对象生成单独的文件,即每个包规范和主体的文件。单独的文件是对 PL/SQL 进行源代码控制的最佳方法。(您可以将此方法扩展为独立过程和函数、类型和触发器。
这些查询将生成可以在 TOAD 中运行的 SQL*Plus 脚本。
select 'spool '||object_name||'_spec.sql'||chr(10)
||'select text from user_source where type=''PACKAGE'' and name = '''||object_name||''' order by line;'||chr(10)
||'spool off'
from user_objects
where object_type='PACKAGE'
order by object_name
/
select 'spool '||object_name||'_body.sql'||chr(10)
||'select text from user_source where type=''PACKAGE BODY'' and name = '''||object_name||''' order by line;'||chr(10)
||'spool off'
from user_objects
where object_type='PACKAGE BODY'
order by object_name
/
Run Code Online (Sandbox Code Playgroud)
您可能需要调整 LINESIZE 并关闭 HEADINGS,具体取决于您的环境设置。