执行立即批量收集限制

时间:2017-02-22 07:30:13

标签: oracle bulk collect execute-immediate

对于数百万条记录的操作,我希望限制为500,但以下代码会给出错误。 错误报告: ORA-06550:第6行,第49栏: PLS-00103:遇到以下任何一种情况时遇到符号“LIMIT”:

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;    

1 个答案:

答案 0 :(得分:0)

这不是使用LIMIT子句的方法。我认为你不能在BULK COLLECT中使用LIMIT子句和EXECUTE IMMEDIATE。 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;
/