在不放置所有参数的情况下调用oracle过程
我使用的是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
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
);