我正在使用如下所示的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);
仅将我需要的供应参数以及所有其他参数设置为默认值。
答案 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
);