如何打开存储过程并在SQL * Plus中编辑它

时间:2009-06-30 19:38:12

标签: oracle stored-procedures plsql legacy sqlplus

我需要对过时的旧盒子上的旧Oracle存储过程进行一些更改,以便运行旧的遗留进程。我可以连接到db的唯一工具是SQL Plus。如何将存储过程加载到内存中以便在SQL Plus中进行编辑?

我在网上找到的教程并没有说明这是怎么做的。 : - (

5 个答案:

答案 0 :(得分:6)

  

下载会容易得多   TOAD的试用版

从先前的建议开始,我只是尝试了建议的Oracle SQL Developer链接,它对于编辑过程很有效。

对于 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的管理工具进行连接并进行必要的更改。谢谢大家的建议。