2

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

我在网上找到的教程没有解释这是如何完成的。:-(

4

5 回答 5

6

下载 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

简而言之,基斯特的巨大痛苦。:-)

于 2009-06-30T19:46:01.700 回答
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
于 2012-02-14T14:54:31.580 回答
0

不能下载安装Oracle SQL Developer吗?免费。

对于 Unix,有TOra,(开源)

于 2009-06-30T19:46:33.977 回答
0

如果您可以使用 SQL*Plus 连接到数据库,那么您应该可以使用 SQL IDE 进行连接。也就是说,您不能在 SQL*Plus 中打开一个 proc 进行编辑,但您可以编译一个。您可以将更新的 proc 复制到命令提示符中(必要时逐行)并编译它。

如果您需要以手动方式访问当前源,可以查询 USER_SOURCE 表。

但是,我强烈建议考虑使用 IDE 连接到数据库。

于 2009-06-30T19:48:45.597 回答
0

该盒子是 HPUX,没有运行 TNS 侦听器,这几乎消灭了整个开发工具群。但是,DBA 能够使用称为 OEM 的管理工具进行连接并进行必要的更改。谢谢大家的建议。

于 2009-06-30T20:29:20.380 回答