正如标题所说,如何使用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 */
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我不确定我是否理解你要解决的问题.
如果要加载从游标中提取到集合中的每一行,则无需使用LIMIT子句.只是
OPEN cur;
FETCH cur
BULK COLLECT INTO cur_data;
<<do something with the data>>
CLOSE cur;
Run Code Online (Sandbox Code Playgroud)
如果要使用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;
Run Code Online (Sandbox Code Playgroud)
在循环内一次获取500行数据没有任何意义,然后在循环外部对集合执行某些操作.