我正在开发与Oracle数据库交互的.NET前端。我已经想出了如何获得要执行的存储过程的列表,但我不知道如何获取属于存储过程的参数列表。我希望能够显示存储过程的输入参数和输出参数的所有参数的列表。Oracle存储过程列表参数
我试过使用DBA_SOURCE,DBA_PROCEDURES,ALL_DEPENDENCIES,但我还没有看到任何显示属于指定存储过程的参数。
任何想法?
我正在开发与Oracle数据库交互的.NET前端。我已经想出了如何获得要执行的存储过程的列表,但我不知道如何获取属于存储过程的参数列表。我希望能够显示存储过程的输入参数和输出参数的所有参数的列表。Oracle存储过程列表参数
我试过使用DBA_SOURCE,DBA_PROCEDURES,ALL_DEPENDENCIES,但我还没有看到任何显示属于指定存储过程的参数。
任何想法?
我相信,我收到两种反应是正确的,但我最终找到一个不同的查询,给了我正是我要找for:
SELECT
ARGUMENT_NAME
, PLS_TYPE
, DEFAULT_VALUE
FROM
USER_ARGUMENTS
WHERE
OBJECT_NAME = '<my_stored_proc>'
这一直在为我工作,并拉取了我想要的所有OracleParameter信息。
您可以在DBA/ALL/USER_ARGUMENTS
视图中查找参数元数据。
这是我们使用,查询或多或少:
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
正如其他人所说的 - 您可以在_ARGUMENTS视图中找到大部分元数据,但要注意的是,如果参数是pl/sql记录类型或者可能需要哪种结构将sys_refcursor变量传递给存储过程。 –