我需要对过时的旧盒子上的旧Oracle存储过程进行一些更改,以便运行旧的遗留进程。我可以连接到db的唯一工具是SQL Plus。如何将存储过程加载到内存中以便在SQL Plus中进行编辑?
我在网上找到的教程并没有说明这是怎么做的。 : - (
答案 0 :(得分:6)
从先前的建议开始,我只是尝试了建议的Oracle SQL Developer链接,它对于编辑过程很有效。下载会容易得多 TOAD的试用版
对于 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
强>
总之,凯斯特的巨大痛苦。 : - )
答案 1 :(得分:2)
你可以使用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
答案 2 :(得分:0)
您是否可以下载并安装Oracle SQL Developer?它是免费的。
对于Unix,有TOra,(开源)
答案 3 :(得分:0)
如果可以使用SQL * Plus连接到db,则应该能够使用SQL IDE进行连接。 也就是说,您无法在SQL * Plus中打开proc进行编辑,但您可以编译一个。您可以将更新的proc复制到命令提示符中(如有必要,逐行)并编译它。
如果您需要以手动方式访问当前源,可以查询USER_SOURCE表。
然而,我强烈建议您考虑使用IDE连接到数据库。
答案 4 :(得分:0)
该框是HPUX,没有运行TNS监听器,几乎消除了整个开发工具队。但是,DBA能够使用名为OEM的管理工具进行连接并进行必要的更改。谢谢大家的建议。