Oracle 具有立即执行功能的批量收集限制

Oracle 具有立即执行功能的批量收集限制,oracle,bulk,collect,execute-immediate,Oracle,Bulk,Collect,Execute Immediate,对于数百万条记录的操作,我想设置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 bul

对于数百万条记录的操作,我想设置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子句

示例:


可能重复的
限制500
。我想你不明白为什么要使用限额,你能为批量收款设定的最佳限额是多少。限制根本不是一个行数计数器。如果需要行计数器,请在动态查询中使用它来限制行。读这个。我不能使用游标,因为我的查询不是静态的。查询是动态构建的,然后在executeimmediate中使用
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;
/