Как вывести результат выполнения процедуру из запроса 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