【问题标题】:How do I Open a Stored Procedure and Edit it in SQL*Plus如何在 SQL*Plus 中打开存储过程并对其进行编辑
【发布时间】:2010-11-07 03:00:40
【问题描述】:

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

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

【问题讨论】:

    标签: oracle stored-procedures plsql legacy sqlplus


    【解决方案1】:

    下载会容易很多 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 的巨大痛苦。 :-)

    【讨论】:

    • +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
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 离开 *nix 这么久有点尴尬,以至于我自动假设人们可以使用 Windows...
        【解决方案5】:

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

        对于 Unix,有 TOra,(开源)

        【讨论】:

        • Unix 机器,我从 hpux 登录本地连接。数据库没有 TNS,所以我只能在本地连接...
        • 托拉怎么样?开源:tora.sourceforge.net ...否则,您将无法将源代码假脱机到一个文件并在其上使用编辑器。
        猜你喜欢
        • 2011-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-11
        • 2016-05-12
        • 2015-01-04
        相关资源
        最近更新 更多