在 PL/SQL 中列出过程参数

Posted

技术标签:

【中文标题】在 PL/SQL 中列出过程参数【英文标题】:Listing procedure parameters in PL/SQL 【发布时间】:2014-12-15 14:51:44 【问题描述】:

我可以通过查询 dba_procedures 来检索所有过程的列表。但是我只能提取过程名称。但我也需要它们的参数。

现在,我知道我可以通过查询all_source 表来访问“当前用户可访问的存储对象的文本源”

但是还有其他方法可以检索过程的参数吗?

【问题讨论】:

Oracle 中没有db_procedures 视图或表 @Ben 的意思是 DBA_PROCEDURES 抱歉 - 是的,我的意思是 DBA_PROCEDURES。谢谢马克。修改了我的帖子。 【参考方案1】:

您可以使用 SYS.ALL_ARGUMENTS 表查询参数:

SELECT * FROM SYS.ALL_ARGUMENTS WHERE 
  PACKAGE_NAME = '<null_or_package_name>' AND 
  OBJECT_NAME = '<procedure_name>';

【讨论】:

【参考方案2】:

在 SQL*Plus 或 SQL Developer 中,您可以使用 DESCribe procedure_name 命令:

Oracle> desc dbms_metadata
FUNCTION ADD_TRANSFORM RETURNS NUMBER
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 HANDLE                         NUMBER                  IN
 NAME                           VARCHAR2                IN
 ENCODING                       VARCHAR2                IN     DEFAULT
 OBJECT_TYPE                    VARCHAR2                IN     DEFAULT
FUNCTION CHECK_MATCH_TEMPLATE RETURNS NUMBER
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 POBJNO                         NUMBER                  IN
 SPCNT                          NUMBER                  IN
...

【讨论】:

@road242 答案为您提供完整的信息;如果您想要一个快速的汇总列表,DESCribe proc_name 通常会为您提供所需的内容。

以上是关于在 PL/SQL 中列出过程参数的主要内容,如果未能解决你的问题,请参考以下文章

PL/Sql 中创建调试调用存储过程

PL/Sql 中创建调试调用存储过程

使用带有布尔输入参数的 PL/SQL 在 oracle 中调用 java 存储过程

pl/sql 存储过程从日期等于存储过程参数的表中进行选择

带有参数的 PL/SQL 过程/函数从选择查询返回表

将值列表作为输入参数传递给 PL/SQL 过程