2011-05-30 147 views
9

过程PL/SQL可以获取可变数量的参数吗?PL/SQL存储过程中可变数量的参数

在我的情况下,程序由表单的提交按钮调用,并且表单具有可变数量的输入。

+0

imo使用默认值或创建几个调用基本过程的重载。将所有常用处理放在由所有其他重载的特效调用的基本proc中。当然,重载的procs每个都会有额外的处理过程。 – tbone 2011-05-31 10:48:10

回答

9

你不提它,但你使用mod_plsql?

如果是这样,你应该阅读约flexible parameter passing

总之,您的过程名称前加一个感叹号,并用name_array和value_array定义您的过程。

+0

我搜索了灵活的参数传递,就像你说的,我发现这个:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:19276873018565 问题解决!非常感谢您 – Moltes 2011-05-31 10:56:17

+0

感谢您的接受。我的答案中的文字也是一个链接,它可以帮助你避免再次搜索:-) – 2011-05-31 11:12:20

3

整理。你可以给程序参数的默认值:

CREATE PROCEDURE myproc(p_value_a NUMBER DEFAULT 1, 
         p_value_b NUMBER DEFAULT 2) AS 
    ... 

,你可以这样调用:

myproc(999); 

或像这样:

myproc (p_value_b => 11); 
+1

我宁愿使用NULL作为默认值。但否则,答案是好的。 – Codo 2011-05-30 18:05:49

+0

我想到了默认值,但参数的数量可能非常大。 一个包含100个参数且空默认值的过程,奇怪的是? – Moltes 2011-05-30 18:17:55

+0

我从来没有见过需要100个参数的过程。如果您有100个表单变量,则需要在将其发送到数据库之前进行一些服务器端处理。 – eaolson 2011-05-30 20:31:49