-- 프로시저 또는 패키지에서 대용량 데이터 처리 시 유용
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;
'ORACLE' 카테고리의 다른 글
[ORACLE]CURSOR 예제 (0) | 2020.11.19 |
---|---|
[ORACLE]tnsname.ora 설정 (0) | 2020.11.16 |
[ORACLE]SQL%ROWCOUNT 예제 (0) | 2020.11.12 |
[ORACLE]ROWNUM/ROW_NUMBER() 예제 (0) | 2020.11.12 |
[ORACLE]WITH절 예제 (0) | 2020.11.12 |