2016-07-28 4 views
1

Я читал по именованным параметрам. У меня на самом деле есть 2 вопроса:Сохраненная процедура с именованными параметрами и курсором

Если используется синтаксис именованных параметров: p_rank => 5, могу ли я передать только то, что мне нужно. Скажем, процедура принимает 5 параметров, но для этого вызова я хочу только передать 1 параметр.

Могу ли я: exec procedure_name(p_rank => 5) и не беспокоиться о других 4?

Теперь с этим, как я могу использовать именованные параметры, которые имеют выход REF CURSOR?

exec customer_package.retrieve_data (
    p_rank    => 5, 
    p_value_score  => p_value, 
    p_momentum_score => p_momentum, 
    p_growth_score  => p_growth, 
    p_data    => p_output); 

p_data фактически REF CURSOR ....... поэтому, если вы звоните с помощью позиционных параметров из SQL Plus можно просто определить переменную как REF_CURSOR и распечатать его. Но это делается в хранимой процедуре, вызывая другую хранимую процедуру, которая должна вернуть REF CURSOR .......

+1

Да, вся идея именованных параметров заключается в том, чтобы предоставить вам только те, которые вам нужны, если другие параметры не требуются. –

ответ

1

Чтобы вызвать proc как exec procedure_name(p_rank => 5), вы должны определить другие параметры с помощью значений DEFAULT. Если у вас есть параметры OUT, такие как p_data, вы должны передать его в свою очередь.

Смежные вопросы