Oracle 存储过程列表参数
Oracle Stored Procedure List Parameters
我正在开发与 Oracle 数据库交互的 .NET 前端。我已经弄清楚如何获取要执行的存储过程列表,但我不知道如何获取属于存储过程的参数列表。我希望能够显示所有参数的列表,这些参数既是存储过程的输入参数,也是输出参数。
我已经尝试使用 DBA_SOURCE、DBA_PROCEDURES、ALL_DEPENDENCIES,但我没有看到任何显示属于指定存储过程的参数的内容。
有什么想法吗?
您在 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
我相信我收到的两个回复都是正确的,但我最终找到了一个不同的查询,它给出了我正在寻找的内容:
SELECT
ARGUMENT_NAME,
PLS_TYPE,
DEFAULT_VALUE
FROM
USER_ARGUMENTS
WHERE
OBJECT_NAME = '<my_stored_proc>'
到目前为止,这一直在为我工作,并提取我想要的所有 OracleParameter 信息。
我正在开发与 Oracle 数据库交互的 .NET 前端。我已经弄清楚如何获取要执行的存储过程列表,但我不知道如何获取属于存储过程的参数列表。我希望能够显示所有参数的列表,这些参数既是存储过程的输入参数,也是输出参数。
我已经尝试使用 DBA_SOURCE、DBA_PROCEDURES、ALL_DEPENDENCIES,但我没有看到任何显示属于指定存储过程的参数的内容。
有什么想法吗?
您在 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
我相信我收到的两个回复都是正确的,但我最终找到了一个不同的查询,它给出了我正在寻找的内容:
SELECT
ARGUMENT_NAME,
PLS_TYPE,
DEFAULT_VALUE
FROM
USER_ARGUMENTS
WHERE
OBJECT_NAME = '<my_stored_proc>'
到目前为止,这一直在为我工作,并提取我想要的所有 OracleParameter 信息。