Oracle存储过程列出参数

4
我正在开发一个与Oracle数据库交互的.NET前端。我已经找到如何获取要执行的存储过程列表,但不知道如何获取属于存储过程的参数列表。我希望能够显示出所有既是输入参数又是输出参数的存储过程参数列表。
我尝试使用DBA_SOURCE、DBA_PROCEDURES、ALL_DEPENDENCIES等方法,但没有找到相关显示指定存储过程所属参数的内容。
有什么想法吗?

正如其他人所说 - 您可以在 _ARGUMENTS 视图中找到大部分元数据,但需注意如果参数是 PL/SQL 记录类型或作为存储过程入参传递的 sys_refcursor 变量的结构可能会更加复杂,您需要进行深入挖掘。 - Michael Broughton
3个回答

2

我相信我收到的两个回复都是正确的,但是最终我找到了一个不同的查询,它给了我我所需要的准确结果:

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

到目前为止,这对我一直有效,并且还提取了我想要的所有OracleParameter信息。


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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接