OMG Ponies совершенно правильно,
, но здесь есть просто другой способ сделать то же самое
Var X Refcursor;
Begin
Open :X For
Select 1 Num, 'b' Co
From Dual
Union
Select 2 Num, 'c' Co
From Dual;
end;
/
print x;
Обратите внимание, когда вы делаете что-то в Oracle, например, открывая курсоры или еще что-нибудьдолжно быть в пределах НАЧАЛА / КОНЦА, и вы не можете просто сделать:
Var X Refcursor;
Open X For
Select 1 Num, 'b' Co
From Dual
Union
Select 2 Num, 'c' Co
From Dual;
Это не будет работать!Вы должны заключить курсор OPEN в блок BEGIN / END (будь то автономный блок или процедура ...)
Create or replace Procedure Ccc(X Out sys_Refcursor)
As
begin
Open X For
Select 1 Num, 'b' Co
From Dual
Union
Select 2 Num, 'c' Co
From Dual;
End Ccc;
/
Var X Refcursor;
Begin
Ccc(:X);
End;
/
print x;
обратите внимание: x в начале / конце в автономных блоках означаетдвижок sql вы используете переменную, созданную вне блока.в пакетах / процессах это не нужно.