正如标题所说,如何使用LIMIT子句批量收集到嵌套表中? 在以下示例中,cur_data是一个嵌套表,在随后的BULK COLLECT中被覆盖。我看到EXTEND用于向嵌套表添加数据。有没有办法和BULIK COLLECT做类似的事情?
OPEN cur;
LOOP
FETCH cur bulk collect INTO cur_data LIMIT 500;
EXIT WHEN cur_data%COUNT=0;
END LOOP;
CLOSE cur;
/*Data gets overwritten with empty cursor--> No data in cur_data here*/
OPEN cur;
FETCH cur bulk collect INTO cur_data;
CLOSE cur;
/*No Problems--> All data fetched into cur_data */
提前致谢。
答案 0 :(得分:6)
我不确定我是否理解你要解决的问题。
如果要加载从游标中取出的每一行到集合中,则无需使用LIMIT子句。简单地
OPEN cur;
FETCH cur
BULK COLLECT INTO cur_data;
<<do something with the data>>
CLOSE cur;
如果要使用LIMIT子句,则意味着您希望一次处理从游标返回的数据子集,以限制分配给集合的服务器PGA的数量。假设你正在那样做
OPEN cur;
LOOP
FETCH cur
BULK COLLECT INTO cur_data LIMIT 500;
EXIT WHEN cur_data%count = 0;
<<do something with the 500 elements in cur_data>>
END LOOP;
CLOSE cur;
在循环中一次获取500行数据没有任何意义,然后在循环外部对集合执行某些操作。