Как вывести результат выполнения процедуру из запроса select

Есть процедура, в которой код по обработке двух таблиц (формирование отчёта).

Как вывести результат выполнения этой процедуры в виде таблицы c помощью обычного запроса select?

Код процедуры:

var rc refcursor
declare
   cols varchar2 (1000);
   sqlqry varchar2 (32767);
begin
select listagg('''' || slugba || ''' "' || slugba || '"', ',') within group
(order by slugba)
into cols
from (select distinct k.text as slugba from KOMAND T, (select
* from bd2.kods_slugba k1 where k1.nomer = '7301') k where t.slugba = K.kod
group by t.mesto_go, k.text);

sqlqry := 'select * from (
  select * from (
  select t.mesto_go, k.text as slugba, count(*) as cnt 
  from KOMAND T, (select * from bd2.kods_slugba k1 where k1.nomer =
7301) k 
  where t.slugba = K.kod
  group by t.mesto_go, k.text
  )
)
pivot (
  sum(CNT) for slugba in (' || cols || ')
)';

open :rc for sqlqry;

end;

print rc

Oracle 11.


Ответы (1 шт):

Автор решения: 0xdb

Давайте попробуем на более простом примере:

var rc refcursor 
begin 
    open :rc for select 1 from dual;
end;

print rc

Error report -
ORA-06550: line 5, column 7:
PLS-00103: Encountered the symbol "RC" when expecting one of the following:

:= . ( @ % ;

Не смущает, что ошибка в 5-й строке, а в блоке их всего 3-и. Может блок надо завершить:

var rc refcursor 
begin 
    open :rc for select 1 from dual;
end;
/
print rc

         1
----------
         1
→ Ссылка