Вызов процедуры оракула без указания всех параметров - PullRequest
0 голосов
/ 14 марта 2019

Я использую процедуру оракула, которая выглядит следующим образом

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 Ответ

6 голосов
/ 14 марта 2019

Например, с такой процедурой

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
         );             
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...