이 포스팅에서는 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 댓글