ORACLE

[ORACLE]CURSOR 예제

선영아 사랑해 2020. 11. 19. 10:10

-- 프로시저 또는 패키지에서 CURSOR 사용(PL/SQL)

-- FOR문을 이용한 CASE 2의 경우를 더 많이 사용

 

CASE 1. 일반적인 경우

DECLARE


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
 ;
 
STORE_CD VARCHAR2(10);
AMOUNT NUMBER;
 
BEGIN
    OPEN curSaleAmt('20201119');
LOOP
   FETCH curSaleAmt INTO STORE_CD, AMOUNT;
   EXIT WHEN curSaleAmt%NOTFOUND;
   DBMS_OUTPUT.PUT_LINE(STORE_CD || ':' || AMOUNT);
END LOOP;
CLSOE curSaleAmt;


END;

 

CASE 2. FOR문 이용한 경우

 

BEGIN

    FOR Data IN curSaleAmt('20201119');

 

    LOOP

        DBMS_OUTPUT.PUT_LINE(Data.STORE_CD || ':' || Data.AMOUNT);

    END LOOP;

END;

'ORACLE' 카테고리의 다른 글

[ORACLE]BULK COLLECT INTO 예제  (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