Reputation: 3
I'm using oracle procedure which looks like this
CREATE PROCEDURE spName (
pCurosr OUT refcursor,
par2 IN VARCHAR := NULL,
....
....
par98 IN VARCHAR := NULL,
error OUT NUMBER
) AS
BEGIN
....
....
END
Problem is, some procedures take too many parameters which have been set NULL as default value. What I want to know is, whether it is possible to exec procedure like this?
exec spName(:refcur, :par5 = 'value', :error);
Only supply parameters that I want and all other parameters are set as default values.
Upvotes: 0
Views: 1126
Reputation: 22969
For example, with a procedure like this
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 ...
You can use named parameter assignment:
declare
vOut number;
begin
testProc (pOut => vOut,
pIn3 => 3
);
end;
The unnamed parameters will take the default value.
The order of named parameters is not important here, so you can do, for example,
testProc (pIn1 => 1,
pOut => vOut,
pIn3 => 3
);
Upvotes: 6