Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不放置所有参数的情况下调用oracle过程_Oracle_Plsql - Fatal编程技术网

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

在不放置所有参数的情况下调用oracle过程,oracle,plsql,Oracle,Plsql,我使用的是oracle过程,看起来像这样 CREATE PROCEDURE spName ( pCurosr OUT refcursor, par2 IN VARCHAR := NULL, .... .... par98 IN VARCHAR := NULL, error OUT NUMBER ) AS BEGIN .... .... END create or replace procedure testProc

我使用的是oracle过程,看起来像这样

CREATE PROCEDURE spName (
    pCurosr OUT refcursor,
    par2 IN VARCHAR := NULL,
        ....
        ....
    par98 IN VARCHAR := NULL,
    error OUT NUMBER
) AS
BEGIN
    ....
    ....
END
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 ...
问题是,有些过程将太多已设置为NULL的参数作为默认值。 我想知道的是,是否有可能像这样执行程序

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

仅提供我想要的参数和所有其他参数设置为默认值。

例如,使用类似于以下的过程

CREATE PROCEDURE spName (
    pCurosr OUT refcursor,
    par2 IN VARCHAR := NULL,
        ....
        ....
    par98 IN VARCHAR := NULL,
    error OUT NUMBER
) AS
BEGIN
    ....
    ....
END
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
         );