在不放置所有参数的情况下调用oracle过程

时间:2019-03-14 08:21:42

标签: oracle plsql

我正在使用如下所示的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);

仅将我需要的供应参数以及所有其他参数设置为默认值。

1 个答案:

答案 0 :(得分:6)

例如,使用这样的过程

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
         );