バルクコレクトスクリプト

※コピーすると改行が抜ける場合はソースをダブルクリックして強調表示を外してからコピーしてください

set serveroutput on
DECLARE
    BULK_NUM CONSTANT PLS_INTEGER := 5; --バルクサイズ
    CURSOR CUR_EMP IS
    SELECT ENAME FROM SCOTT.EMP ORDER BY EMPNO;
    TYPE TYPE_EMP IS TABLE OF CUR_EMP%ROWTYPE INDEX BY BINARY_INTEGER;
    REC_ENAME TYPE_EMP;
BEGIN
    OPEN CUR_EMP;
    LOOP
        FETCH CUR_EMP BULK COLLECT INTO REC_ENAME LIMIT BULK_NUM;
        DBMS_OUTPUT.PUT_LINE('フェッチ数:' || REC_ENAME.COUNT);
        EXIT WHEN REC_ENAME.COUNT = 0;
        FOR i in 1 .. REC_ENAME.COUNT
        LOOP
            DBMS_OUTPUT.PUT_LINE(REC_ENAME(i).ENAME);
        END LOOP;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('合計フェッチ数:' || CUR_EMP%ROWCOUNT);
    CLOSE CUR_EMP;
end;
/


マニュアル

Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス(10.2)
PL/SQL ユーザーズ・ガイドおよびリファレンス(10.2)
★ORACLE案件承ります