【问题标题】:create the pl/sql which returns the list of procedures in Oracle创建 pl/sql,它返回 Oracle 中的过程列表
【发布时间】:2013-10-01 10:28:12
【问题描述】:

我正在尝试列出数据库中的过程和触发器,但我必须使用过程或函数来这样做。

这个查询返回的正是我需要的,但我需要使用 PL/SQL 获得相同的结果。

select *
  from all_source
 where type = 'PROCEDURE'

这个查询返回的正是我需要的,但我必须使用 PL/SQL 获得相同的结果。

谢谢

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    试试这个

    declare record all_source%ROWTYPE
    begin
    select * into record from all_source where type = ?
    end;
    

    【讨论】:

    【解决方案2】:

    尝试以下步骤,

    CREATE OR REPLACE 
    PROCEDURE get_proc_list(
              i_type IN VARCHAR2,
              o_result OUT sys_refcursor)
    IS
         l_type VARCHAR2(10) := UPPER(i_type);
    BEGIN
        OPEN o_result FOR
        SELECT * FROM all_source
        WHERE  TYPE = l_type;
    END;
    

    执行程序,

    var o_result refcursor;
    EXECUTE get_proc_list('procedure',:o_result);
    print o_result;
    

    【讨论】:

    • 好的。所以,要执行它,我应该使用 execute get_proc_list('procedure') ??我还需要一个参数.. 谢谢你的时间
    • @user1845928,我已经修改答案添加执行步骤。
    • 太棒了。谢谢你。你能告诉我为什么当我使用参数'trigger'而不是'procedure'时我没有得到触发器列表吗??
    • 如果您的架构中有触发器,您肯定会得到触发器列表。试试这样,EXECUTE get_proc_list('trigger',:o_result);
    猜你喜欢
    • 2017-01-20
    • 2017-12-21
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 2022-08-17
    • 2021-08-30
    相关资源
    最近更新 更多