Hello World

C#(WINFORM, WINCE, WINDOWS MOBILE) 실전 활용 예제소스 및 프로그램 개발

[ORACLE]BULK COLLECT INTO 예제

댓글 0

ORACLE

2020. 11. 19.

-- 프로시저 또는 패키지에서 대용량 데이터 처리 시 유용

 

CURSOR curSaleAmt(pSaleDate VARCHAR2)
IS
SELECT STORE_CD
        , SUM(AMT)
 FROM TB_SALES
WHERE 1=1
   AND SALE_DATE = pSaleDate
GROUP BY SALE_DATE, STORE_CD
 ;

 

TYPE CUR_SALE_TBL_TYPE IS TABLE OF curSaleAmt%ROWTYPE INDEX BY BINARY_INTEGER;

C_Sale_Tbl    CUR_SALE_TBL_TYPE;
        
BEGIN
    -- CURSOR OPEN
    OPEN curSaleAmt('20201119');

    LOOP

        -- 한번 실행 할 때 마다 CURSOR 데이터를 100건 읽기.
        FETCH curSaleAmt BULK COLLECT INTO C_Sale_Tbl LIMIT 100;

 

        EXIT WHEN C_Sale_Tbl.COUNT <= 0;

 

        FOR i IN C_Sale_Tbl.FIRST..C_Sale_Tbl.LAST LOOP

            DBMS_OUTPUT.PUT_LINE(C_Sale_Tbl(i).STORE_CD || ':' || C_Sale_Tbl(i).AMT);

        END LOOP;

 

        EXIT WHEN curSaleAmt%NOTFOUND;

 

    END LOOP;

 

    -- CURSOR CLOSE
    CLOSE curSaleAmt;

END;