Я пытаюсь заполнить курсор в хранимой процедуре записями из таблицы, используя идентификаторы, возвращаемые другой хранимой процедурой в отдельном курсоре.
Мой код выглядит примерно так (для простоты я сильно его упростил):
PROCEDURE GetAll(DataCur OUT RefCur)
AS
IDsCursor RefCur;
ids refs;
BEGIN
GetAllRefs(IDsCursor);
loop
fetch IDsCursor
bulk collect into ids limit 999999999;
exit when IDsCursor%NOTFOUND;
end loop;
close IDsCursor;
open DataCur for
select
tbl.*
from
table(ids) ids
inner join myobjects tbl on
tbl.itemid = ids.itemid;
END;
, где refs
- это пользовательский тип таблицы.
Странная вещь в том, что это работает, когда у меня есть небольшое число ids
, но когда число увеличивается (70k + в моем случае, так что немного), я получаю следующую ошибку:

Мои вопросы:
- Это действительно проблема со связью, или я делаю что-то не так? У меня никогда не было этой проблемы раньше.
- Есть ли другой способ достижения того, что мне нужно? Мне нужно иметь возможность повторно использовать хранимую процедуру
GetAllRefs
в нескольких местах, но как я могу это сделать без использования реальной таблицы?