2015-10-27 221 views
4

我正在开发与Oracle数据库交互的.NET前端。我已经想出了如何获得要执行的存储过程的列表,但我不知道如何获取属于存储过程的参数列表。我希望能够显示存储过程的输入参数和输出参数的所有参数的列表。Oracle存储过程列表参数

我试过使用DBA_SOURCE,DBA_PROCEDURES,ALL_DEPENDENCIES,但我还没有看到任何显示属于指定存储过程的参数。

任何想法?

+0

正如其他人所说的 - 您可以在_ARGUMENTS视图中找到大部分元数据,但要注意的是,如果参数是pl/sql记录类型或者可能需要哪种结构将sys_refcursor变量传递给存储过程。 –

回答

1

我相信,我收到两种反应是正确的,但我最终找到一个不同的查询,给了我正是我要找for:

SELECT 
     ARGUMENT_NAME 
     , PLS_TYPE 
     , DEFAULT_VALUE 
    FROM 
     USER_ARGUMENTS 
    WHERE 
     OBJECT_NAME = '<my_stored_proc>' 

这一直在为我工作,并拉取了我想要的所有OracleParameter信息。

1

您可以在DBA/ALL/USER_ARGUMENTS视图中查找参数元数据。

1

这是我们使用,查询或多或少:

SELECT * 
FROM 
    ALL_ARGUMENTS 
WHERE 
    DATA_TYPE IS NOT NULL 

    -- This check removes package procedure arguments that don't really 
    -- seem to mean anything 
AND 
    DATA_LEVEL = 0 

    -- Use this predicate to remove entries for the return value of functions 
AND 
    POSITION > 0 
ORDER BY 
    OWNER, 
    PACKAGE_NAME, 
    OBJECT_NAME, 
    OBJECT_ID, 
    OVERLOAD, 
    POSITION