[ORACLE] CURSOR 사용법과 간단한 예제




이 포스팅에서는 Oracle SQL Developer를 사용하였습니다.

SELECT문을 통해 얻은 결과집합을 LOOP내에서 순차적으로 사용하는 것이 가장 일반적인 예시라 생각됩니다.


❋ 문법

변수는 커서와 커서가 가르키는 값을 담을 변수(SELECT 결과 행)가 필요합니다.

DECLARE 
    CURSOR "커서명"
    IS "SELECT 구문";
 
    "변수명" "변수타입";

OPEN "커서명";

   #LOOP

   FETCH "커서명" INTO "변수명";           -- SELECT 결과의 다음 행으로 이동

   EXIT WHEN "커서명" %NOTFOUND;     -- 커서값이 없는 경우 EXIT 

   #END LOOP

CLOSE "커서명"




❋ 예제

예제에서는 아래와 같은 테이블에서 개수(CNT)3보다 적은 과일명(FRUIT)을 출력하는 프
로시저를 통해 CURSOR 사용법에 대해 알아봅니다.


[예제코드]
CREATE OR REPLACE PROCEDURE PC_CURSOR_BY_FRUIT
(
    P_COUNT IN VARCHAR2
) 
IS
    V_QUERY VARCHAR(100);
BEGIN
    DECLARE
        -- # CURSOR 정의
        CURSOR cursor_Restock 
        IS
        SELECT * FROM TB_SALES WHERE CNT < P_COUNT;

        -- # 변수 정의
        V_PRODUCT TB_SALES %ROWTYPE;
        
    BEGIN    
        OPEN cursor_Restock;
        
        -- # 반복 실행
        LOOP
            FETCH cursor_Restock INTO V_PRODUCT;
            EXIT WHEN cursor_Restock %NOTFOUND;
            
            dbms_output.put_line('FRUIT : ' || V_PRODUCT.FRUIT); 
            dbms_output.put_line('COUNT : ' || V_PRODUCT.CNT); 
                    
        END LOOP;
        
        CLOSE cursor_Restock;
    END;
END;

[실행쿼리]

EXEC PC_CURSOR_BY_FRUIT(3);

[결과]


입력받은 Parameter인 3보다 작은 CNT값을 갖는 FRUIT을 출력한 모습입니다.

0 댓글