我正在尝试使用表中的记录填充存储过程中的游标,该表中的ID使用不同存储过程在单独的游标中返回的ID。
我的代码看起来像这样(为了清楚起见,我对其进行了很多简化):
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
存储过程,但是如何在不使用实际表的情况下做到这一点?