使用另一个游标返回的ID向游标填充数据

时间:2018-11-14 09:11:50

标签: oracle toad

我正在尝试使用表中的记录填充存储过程中的游标,该表中的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 +,所以不是很多),我得到以下错误:

enter image description here

我的问题是:

  1. 这真的是沟通问题,还是我做错了什么?我以前从未遇到过这个问题。
  2. 还有另一种方法可以实现我所需要的吗?我需要能够在多个地方重用GetAllRefs存储过程,但是如何在不使用实际表的情况下做到这一点?

0 个答案:

没有答案