【问题标题】:Calling oracle procedure without putting all parameters调用oracle过程而不放置所有参数
【发布时间】:2019-03-14 08:21:42
【问题描述】:

我正在使用如下所示的 oracle 程序

CREATE PROCEDURE spName (
    pCurosr OUT refcursor,
    par2 IN VARCHAR := NULL,
        ....
        ....
    par98 IN VARCHAR := NULL,
    error OUT NUMBER
) AS
BEGIN
    ....
    ....
END

问题是,有些程序接受了太多参数,这些参数已经设置为 NULL 作为默认值。 我想知道的是,是否可以这样执行程序?

exec spName(:refcur, :par5 = 'value', :error);

只提供我想要的参数,所有其他参数都设置为默认值。

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    例如,像这样的过程

    create or replace procedure testProc ( pOut OUT number,
                                           pIn1 IN  number := null,
                                           pIn2 IN  number := null,
                                           pIn3 IN  number := null,
                                           pIn4 IN  number := null
                                         ) is ...
    

    你可以使用命名参数赋值:

    declare
        vOut number;
    begin
        testProc (pOut => vOut,
                  pIn3 => 3
                 );             
    end;
    

    未命名的参数将采用默认值。

    命名参数的顺序在这里并不重要,所以你可以这样做,例如,

    testProc (pIn1 => 1,
              pOut => vOut,
              pIn3 => 3
             );             
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 2011-01-20
      • 2013-03-04
      • 2011-01-04
      相关资源
      最近更新 更多