【发布时间】:2010-11-07 03:00:40
【问题描述】:
我需要对旧机器上的旧 Oracle 存储过程进行一些更改,该机器被保留以运行旧的遗留进程。我可以连接到数据库的唯一工具是 SQLPlus。如何将存储的过程加载到内存中以便在 SQL 中进行编辑Plus?
我在网上找到的教程没有解释这是如何完成的。 :-(
【问题讨论】:
标签: oracle stored-procedures plsql legacy sqlplus
我需要对旧机器上的旧 Oracle 存储过程进行一些更改,该机器被保留以运行旧的遗留进程。我可以连接到数据库的唯一工具是 SQLPlus。如何将存储的过程加载到内存中以便在 SQL 中进行编辑Plus?
我在网上找到的教程没有解释这是如何完成的。 :-(
【问题讨论】:
标签: oracle stored-procedures plsql legacy sqlplus
下载会容易很多 TOAD 试用版
放弃之前的建议,我刚刚尝试了建议的 Oracle SQL Developer 链接,它在编辑 procs 时效果很好。
对于 SQLPlus,您几乎需要显示存储过程的内容,并将其存储到一个文件中(如 DCookie 所建议的 :-)):
sqlplus> spool myprocname.sql;
sqlplus> select text from all_source where name = 'MYPROCNAME' and type = 'PROCEDURE' order by line;
sqlplus> quit;
然后在合适的编辑器中编辑本地 SQL 文件。
然后使用 SQLPlus 运行 SQL 文件以重新构建 proc 以进行测试。
>sqlplus username/password@tnsnamesentry @myproc.sql
简而言之,keester 的巨大痛苦。 :-)
【讨论】:
你可以使用dbms_metadata.get_ddl函数来检索代码,比all_sources好很多。
spool /tmp/my_proc.txt
set long 100000
select dbms_metadata.get_ddl('PROCEDURE','NAME','OWNER') from dual;
spool off
【讨论】:
如果您可以使用 SQL*Plus 连接到数据库,那么您应该可以使用 SQL IDE 进行连接。 也就是说,您不能在 SQL*Plus 中打开一个 proc 进行编辑,但您可以编译一个。您可以将更新后的 proc 复制到命令提示符中(必要时逐行)并编译它。
如果您需要以手动方式访问当前源,可以查询 USER_SOURCE 表。
不过,我强烈建议考虑使用 IDE 连接到数据库。
【讨论】:
该盒子是 HPUX,没有运行 TNS 侦听器,这几乎消灭了整个开发工具群。但是,DBA 能够使用名为 OEM 的管理工具进行连接并进行必要的更改。谢谢大家的建议。
【讨论】:
不能下载安装Oracle SQL Developer吗?它是免费的。
对于 Unix,有 TOra,(开源)
【讨论】: