立即执行批量收集限制
问题描述:
对于在数百万条记录上进行操作,我想限制500个,但以下代码给出了错误。 错误报告: ORA-06550:第6行,列49: PLS-00103:出现符号 “限制” 在需要下列之一时:立即执行批量收集限制
DECLARE
TYPE EMP_T IS TABLE OF NUMBER;
EMP_ID EMP_T;
QRY VARCHAR2(4000):='SELECT EMPLOYEE_ID FROM EMPLOYEES';
begin
execute immediate QRY bulk collect into EMP_ID LIMIT 500;
END;
答
这是不使用LIMIT子句的方式。我认为你不能在EXECUTE IMMEDIATE的BULK COLLECT中使用LIMIT子句。 BULK COLLECT LIMIT in EXECUTE IMMEDIATE
实施例:
DECLARE
TYPE EMP_T IS TABLE OF NUMBER;
EMP_ID EMP_T;
CURSOR c_data IS SELECT empid FROM EMPLOYEE;
begin
OPEN c_data;
LOOP
FETCH c_data
BULK COLLECT INTO EMP_ID LIMIT 100;
EXIT WHEN EMP_ID.count = 0;
-- Process contents of collection here.
DBMS_OUTPUT.put_line(EMP_ID.count || ' rows');
END LOOP;
CLOSE c_data;
END;
/
的[Oracle中 “批量收集进入” 和 “立即执行”]可能的复制(http://stackoverflow.com/questions/21117021/bulk-collect -into-and-execute-immediate-in-oracle) –
'LIMIT 500'。我想你不明白为什么使用LIMIT,以及最适合批量收集的限制。 LIMIT根本就不是一个行计数器。如果你想要一个行计数器在动态查询中使用它来限制行。读这个 。 http://stackoverflow.com/questions/38659739/setting-a-value-for-limit-while-using-bulk-collect – XING