Я пытаюсь вернуть два курсора ref из процедуры и иметь немного проблем. То, что я пытаюсь сделать, это захватить информацию с первого курсора, выбрать несколько полей и присоединиться к какой-либо другой информации и вставить результат в переменную таблицы ... затем выбрать отдельные элементы из этой таблицы во второй курсор. Но я не могу это скомпилировать. Может ли кто-нибудь сказать мне, что я делаю неправильно?Oracle 11g: Использование курсоров внутри процедуры
type T_CURSOR is REF CURSOR
procedure FetchSL3Details_PRC
(
c_items out T_CURSOR,
c_identifiers out T_CURSOR,
p_niin in char
) as
v_idents IDENTIFIER_TABLE_TYPE:= IDENTIFIER_TABLE_TYPE();
BEGIN
open c_items for
select
its.item_set_id,
its.niin,
its.parent_niin,
its.commodity_id,
its.service_type,
its.sl3_type,
its.qty,
its.created_id,
its.created_dt,
its.modified_id,
its.modified_dt
from
item_set its
start with its.niin = p_niin
connect by prior its.niin = its.parent_niin;
for item in c_items loop
v_idents.extend;
v_idents(v_idents.LAST) := identifier_row_type(item.commodity_id,
get_group_name_fun(item.commodity_id),
0);
v_idents.extend;
v_idents(v_idents.LAST) := identifier_row_type(item.created_id,
get_formatted_name_fun(item.created_id),
0);
v_idents.extend;
v_idents(v_idents.LAST) := identifier_row_type(item.modified_id,
get_formatted_name_fun(item.modified_id),
0);
end loop;
open c_identifiers for
select
distinct(v.id),
v.name,
v.type
from
v_idents v;
END FetchSL3Details_PRC;
Что такое T_CURSOR? Обычно я использую sys_refcursor, поскольку тип переменной содержит открытый курсор. –
Что такое код ошибки? –
T_CURSOR - это typedef курсора ref ... – Sam