有没有办法列出调用存储过程(使用Oracle DB)所需的所有参数?
例如,我有一个名为x的函数,其他人已经开发了,现在我必须调用它,但我不知道x期望哪些参数以及哪些参数是强制性的。
答案 0 :(得分:1)
根据授予的权限,您可以查询all_arguments或user_arguments或从11g.r1 dba_arguments开始列出存储过程的参数和其他参数相关信息:
示例:
SQL> create or replace procedure ProcX(
2 p_par1 in number,
3 p_par2 in varchar2 default 'default',
4 p_par3 out number
5 )
6 is
7 begin
8 null;
9 end;
10 /
Procedure created
select t.object_name
, t.argument_name
, t.position
, t.data_type
, t.defaulted
, t.in_out
from user_arguments t
where t.object_name = 'PROCX'
Object_Name Argument_Name Position Data_Type Defaulted In_Out
--------------------------------------------------------------
PROCX P_PAR3 3 NUMBER N OUT
PROCX P_PAR2 2 VARCHAR2 Y IN
PROCX P_PAR1 1 NUMBER N IN
Y
列中的值Defaulted
表示参数p_par2
具有默认值,因此是可选的。
答案 1 :(得分:0)
甚至有人可以从%_ARGUMENTS
- 表中找到子程序参数(如Nicholas所示),在很多情况下可能还不够(取决于域的上下文/复杂性)。相反,您应该通过文档或查看数据库中的子例程(已记录的)代码(SQL Developer,PL/SQL Developer和{等GUI工具)访问记录的子例程签名 {3}}非常适合)或版本控制系统。
如果您的出发点确实如此:
我有一个名为x的函数,其他人已经开发了,现在我必须调用它,但我不知道x期望哪些参数以及哪些参数是强制性的。
并且没有文档,您无法访问源代码,因此我怀疑信息如下:
Object_Name Argument_Name Position Data_Type Defaulted In_Out
--------------------------------------------------------------
PROCX P_PAR3 3 NUMBER N OUT
PROCX P_PAR2 2 VARCHAR2 Y IN
PROCX P_PAR1 1 NUMBER N IN
对你没什么帮助(即使参数有更多的描述性名称),除非函数是“微不足道的”。
为了您的利益,我希望这只是一次性问题 - 在所有其他情况下,您的项目很可能会失败。
答案 2 :(得分:0)
问题标记为plsqldeveloper
。
这么棒的产品的一个重要功能是在对象浏览器中找到它后右键单击该方法。无需撰写任何疑问即可选择各种即时询问。