【问题标题】:How to see PL/SQL Stored Function body in Oracle如何在 Oracle 中查看 PL/SQL 存储函数体
【发布时间】:2012-12-22 03:31:52
【问题描述】:

我在 Oracle 数据库 pAdCampaign.fGetAlgoGroupKey 中有一个存储函数。 怎么看这个函数的代码?

【问题讨论】:

标签: oracle plsql


【解决方案1】:
SELECT text 
FROM all_source
where name = 'FGETALGOGROUPKEY'
order by line

或者:

select dbms_metadata.get_ddl('FUNCTION', 'FGETALGOGROUPKEY')
from dual;

【讨论】:

  • 对于您第一次回答查询,它给出了错误 ORA-00904: "PROCEDURENAME": invalid identifier。
  • 它返回空值。但我确信这个功能是存在/存在的。我从 Java 代码或 SQL 代码调用此函数,它按预期返回值。
  • @VallabhPatade 也许您使用双引号创建了它,并且名称现在区分大小写?您与拥有该功能的用户有联系吗?
  • @VallabhPatade:刚刚看到你实际上是在谈论一个包函数,而不是一个独立函数(你应该马上提到)。那么请参阅 DazzaL 的答案。
  • dbms_metadata.get_ddl 仅适用于您自己的对象或 SYS,因此第一个解决方案有时会返回文本,而第二个则不会。
【解决方案2】:

您也可以使用 DBMS_METADATA:

select dbms_metadata.get_ddl('FUNCTION', 'FGETALGOGROUPKEY', 'PADCAMPAIGN') 
from dual

【讨论】:

    【解决方案3】:

    如果是一个包,那么你可以通过以下方式获取它的源代码:

        select text from all_source where name = 'PADCAMPAIGN' 
        and type = 'PACKAGE BODY'
        order by line;
    

    Oracle 不会单独存储子程序的源代码,因此您需要查看它的包源代码。

    注意:我假设您在创建该包时没有使用双引号,但如果您使用了,则使用

        select text from all_source where name = 'pAdCampaign' 
        and type = 'PACKAGE BODY'
        order by line;
    

    【讨论】:

    • 如果您从 ALL_SOURCE 中选择,您应该在 WHERE 子句中包含 OWNER。
    • 为了显示一个函数,你应该使用的typeFUNCTION
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2013-03-09
    • 2011-02-03
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多