检索PL / SQL过程模式

时间:2012-02-14 21:36:41

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

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

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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

有关存储过程参数的大部分信息都可以在ALL_ARGUMENTS中找到,类似地在USER_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提示。 ARGUMENT_NAME为null是函数的“返回值”

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

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