【问题标题】:Variable number of arguments in PL/SQL stored procedurePL/SQL 存储过程中可变数量的参数
【发布时间】:2011-09-04 23:26:01
【问题描述】:

一个过程 PL/SQL 可以接受可变数量的参数吗?

在我的例子中,该过程是由表单的提交按钮调用的,并且表单具有可变数量的输入。

【问题讨论】:

  • imo 使用默认值或创建多个调用基本过程的重载。将所有常见处理放在所有其他重载过程调用的基本过程中。当然,重载的 procs 每个都有特定于该调用的额外处理。

标签: stored-procedures plsql arguments


【解决方案1】:

有点。你可以给过程参数默认值:

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

你可以这样称呼:

myproc( 999 );

或者像这样:

myproc (p_value_b => 11 );

【讨论】:

  • 我宁愿使用 NULL 作为默认值。但除此之外,答案是好的。
  • 我考虑过默认值,但参数的数量可能非常大。一个有 100 个参数且默认值为 null 的过程,奇怪没有?
  • 我从未见过需要 100 个参数的过程。如果您有 100 个表单变量,则需要在将其发送到数据库之前进行一些服务器端处理。
【解决方案2】:

你没提,你用的是mod_plsql吗?

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

简而言之,在您的浏览器中为您的过程名称添加一个感叹号前缀,并使用 name_array 和 value_array 定义您的过程。

【讨论】:

  • 我像你说的那样搜索了灵活的参数传递,我发现了这个:asktom.oracle.com/pls/asktom/… 问题解决了!非常感谢
  • 感谢您的接受。我的回答中的文字也是一个链接,它可以让你免于自己再次搜索:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 2019-04-17
  • 1970-01-01
相关资源
最近更新 更多