如何使用可选参数创建过程?

nic*_*wkc 9 sql oracle plsql

是否可以使用可选参数创建过程?例如,创建一个添加所有参数的过程.

add(n1, n2, .... nn)
Run Code Online (Sandbox Code Playgroud)

另一个程序,例如我有11个参数,它从1到10加起来,最后一个参数可以做其他事情.通过谷歌搜索,似乎你可以使用数组来做到这一点,但我得到的大多数结果是关于另一种编程语言,而不是plsql.如果将理论应用于plsql我猜我想使用varray或嵌套表?

Dmi*_*riy 12

您需要使用默认值声明参数:

procedure add (n1 number, 
               n2 number default 0,
               ...
               nn number default 99) is ...
Run Code Online (Sandbox Code Playgroud)

使用此程序:

begin
  add(1);
  add(5, 6, 7, ..., 111);
  add(n1 => 111, n5 => 345, nn => 17);
end;
Run Code Online (Sandbox Code Playgroud)

在后一种情况下,你可以看到,你可以通过值3个参数(n1,n5,nn),为他人参数的默认值将被使用.

  • "*在所有其他编程语言中也*" - 不是真的.其他编程语言有"varargs",您可以使用可变数量的参数定义函数(或过程),然后检查函数内部的实际数字.但PL/SQL不支持这一点 (4认同)

Ili*_*kov 9

您可以通过DEFAULT运算符或'=' 执行此操作

PROCEDURE ADD(NUMBER n1, NUMBER n2, NUMBER n3 DEFAULT 0)....
Run Code Online (Sandbox Code Playgroud)

http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/fundamentals.htm#CHDFADII

如果要在调用中没有显式参数命名的情况下使用它,则必须将可选参数放在过程签名列表的末尾.通过调用中的显式参数命名,它们可以放在任何地方