Хранимая процедура с именованными параметрами и курсором

Я читал по именованным параметрам. У меня собственно 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 .......


person Landon Statis    schedule 28.07.2016    source источник
comment
Да, вся идея именованных параметров заключается в том, чтобы вы могли предоставить только те, которые вам нужны, если другие параметры не требуются.   -  person Mark Stewart    schedule 28.07.2016


Ответы (1)


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

person nilsman    schedule 28.07.2016