【问题标题】:Retrieving PL/SQL procedure schema检索 PL/SQL 过程模式
【发布时间】:2012-03-06 06:30:55
【问题描述】:

我需要获取 PL/SQL 过程的参数定义。

在 MS SQL 上,我们使用Information_schema.Parameters; Oracle 中的对应项(如果有)是什么?

【问题讨论】:

    标签: oracle sql-server-2008 plsql information-schema


    【解决方案1】:

    大部分(如果不是全部)相同的数据可以在 Oracle 中从ALL_ARGUMENTS 数据字典表中访问。 ALL_ARGUMENTS 显示您有权执行的所有过程的参数。 USER_ARGUMENTS 显示您拥有的所有过程的参数。 DBA_ARGUMENTS 向您显示数据库中存在的所有过程的参数,但您需要额外的权限才能访问 DBA_* 视图。

    【讨论】:

      【解决方案2】:

      关于存储过程参数的大部分信息都可以在ALL_ARGUMENTSUSER_ARGUMENTSDBA_ARGUMENTS 中找到

      这是一个使用USER_ARGUMENTS的快速示例

      CREATE OR REPLACE PROCEDURE my_proc
      (p_number IN NUMBER,
      p_varchar  IN OUT  VARCHAR2 ,
      p_clob  IN OUT  NOCOPY CLOB,
      p_timestamp  OUT  TIMESTAMP
      )
      IS
      BEGIN
         NULL;
      END;
      /
      
      CREATE OR REPLACE FUNCTION my_func
      (p_date IN DATE,
      p_varchar IN VARCHAR2)
      RETURN BOOLEAN
      IS
      BEGIN
      return TRUE;
      END;
      /
      
      SELECT package_name,object_name, argument_name,  IN_OUT , pls_type ,position
      FROM user_arguments
      WHERE object_name IN ('MY_PROC','MY_FUNC')
      ORDER BY package_name, object_name, position;
      

      它给出了..的输出。

      Procedure created.
      
      Function created.
      
       PACKAGE_NAME          OBJECT_NAME                    ARGUMENT_NAME             IN_OUT    PLS_TYPE              POSITION
      --------------------- ------------------------------ ------------------------- --------- -------------------- ----------
                             MY_FUNC                                                  OUT       BOOLEAN                      0
                             MY_FUNC                        P_DATE                    IN        DATE                         1
                             MY_FUNC                        P_VARCHAR                 IN        VARCHAR2                     2
                             MY_PROC                        P_NUMBER                  IN        NUMBER                       1
                             MY_PROC                        P_VARCHAR                 IN/OUT    VARCHAR2                     2
                             MY_PROC                        P_CLOB                    IN/OUT    CLOB                         3
                             MY_PROC                        P_TIMESTAMP               OUT       TIMESTAMP                    4
      
      7 rows selected.
      

      如您所见,它包含最有用的信息.. 但没有显示 NOCOPY 提示。 为 null 的 ARGUMENT_NAME 是函数的“返回值”

      ALL_ 和 DBA_ 版本将有一个额外的 OWNER 列。

      关于存储过程本身的其他信息可以在 ALL_PROCEDURESALL_PLSQL_OBJECT_SETTINGSALL_OBJECTS 中找到,具体取决于您要查找的详细程度。

      【讨论】:

        猜你喜欢
        • 2012-12-24
        • 1970-01-01
        • 2019-09-16
        • 2010-11-06
        • 2011-11-30
        • 1970-01-01
        • 2018-07-01
        • 2012-11-19
        • 1970-01-01
        相关资源
        最近更新 更多