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

时间:2016-02-01 06:11:36

标签: sql oracle plsql

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

add(n1, n2, .... nn)

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

2 个答案:

答案 0 :(得分:10)

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

procedure add (n1 number, 
               n2 number default 0,
               ...
               nn number default 99) is ...

使用此程序:

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

在最后一种情况下,正如您所看到的,您可以传递3个参数(n1n5nn)的值,对于其他参数,将使用默认值。

答案 1 :(得分:7)

您可以通过DEFAULT运算符或'='

执行此操作
PROCEDURE ADD(NUMBER n1, NUMBER n2, NUMBER n3 DEFAULT 0)....

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

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