我在oracle toad中有1300个存储过程。我想将每个存储过程保存到单独的脚本文件,因为我需要将其更新到另一个数据库。如何执行
答案 0 :(得分:3)
最简单的方法是不需要这样做。最佳实践是在编辑器中编写脚本并使用TOAD将它们运行到数据库中。
为什么这是最佳做法?两个词:源代码控制。
但鉴于您现在不在的地方,您可以使用DBMS_METADATA.GET_DDL来吸取所有包源。 In the docs
这是另一种方法,可以轻松地为每个对象生成单独的文件,即每个包规范和正文的文件。单独的文件是控制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
/
您可能需要调整LINESIZE并关闭HEADINGS,具体取决于您的环境设置。
答案 1 :(得分:2)
在Toad中,可以在“导出”弹出按钮下方的“数据库”主菜单中看到“导出DDL”功能。在那里添加你的对象。您有几个输出选项和脚本生成选项。例如,如果你想在另一个模式中编译它们,你可以省略模式名称。等等。我认为它会做任何你需要的事情。