[Oracle] 오라클 커서 사용법 & 예제 (PL/SQL)

 커서란? 

커서란 특정 SQL 문장을 처리한 결과를 담고있는 메모리 영역을 가리키는 일종의 포인터입니다. 대부분의 SQL문 결과 ROW는 여러개인데 커서를 사용하면 이 ROW에 순차적으로 접근이 가능합니다. 커서의 종류에는 묵시적 커서와 명시적 커서가 있습니다. 묵시적 커서는 오라클 내부에서 자동으로 생성되어 SQL문장이 실행될때마다 자동으로 만들어져 실행되는 커서이고, 명시적 커서는 사용자가 직접 정의해서 사용하는 커서를 말합니다. 이번 포스팅에서는 사용자가 직접 만드는 명시적 커서를 만들어보고 사용하는 방법에대해 알아보도록 하겠습니다.


 커서를 만드는 단계 

커서를 만드는 단계는 크게 커서 선언 -> 커서 열기 -> 패치 단계에서 커서 사용 -> 커서 닫기 크게 이렇게 4가지로 분류할 수 있습니다.


커서 선언

커서는 선언은 DECLEAR부분에 이름을 부여하면 됩니다.

CURSOR 커서명(매개변수1, 매개변수2...)
IS
SELECT문;


커서 열기

선언한 커서를 사용하려면 선언한 커서를 열어주는 작업이 필요합니다.

OPEN 커서명 (매개변수1, 매개변수2...);


커서 사용

정의한 커서를 열었으면 패치단계에서 커서를 사용하면 됩니다. 커서는 SQL 결과 집합이 여러개 이상에서 순차적으로 접근하기 위해 사용하는 방식이므로 거의 필수적으로 LOOP를 비롯한 반복문과 같이 사용하게됩니다.

[Oracle] 오라클 반복문 (LOOP, WHILE, FOR)문 사용법 (PL/SQL)

LOOP
FETCH 커서명  INTO 변수1, 변수2...
EXIT WHEN 커서명%NOTFOUND;
END LOOP;


커서 닫기

커서를 사용한 모든 동작이 끝났으면 커서를 닫아주어야 합니다.

CLOSE 커서명;


 커서 사용예제 

DECLARE
PRODUCT_ID varchar2(100);
PRODUCT_NAME varchar2(100);

CURSOR EX_CUR --커서 선언
IS
SELECT
PRODUCT_ID,
PRODUCT_NAME
FROM
PRODUCTS;

BEGIN
OPEN EX_CUR;-- 2. 명시적 커서 오픈
   
DBMS_OUTPUT.PUT_LINE('제품코드  제품명');

LOOP
FETCH EX_CUR INTO PRODUCT_ID, PRODUCT_NAME; --커서에서 데이터 가져오기
EXIT WHEN EX_CUR %NOTFOUND; --커서가 없을 경우 종료
DBMS_OUTPUT.PUT_LINE(PRODUCT_ID||'  '||PRODUCT_NAME);
END LOOP;

CLOSE EX_CUR; --커서 닫기
END;

커서


댓글(1)

  • 대단하다
    2020.11.20 14:54

    데이터베이스 관련글 정독중인데 정말 대단하네요.... 지식도 지식이지만 꾸준함에 감탄하고 갑니다.

Designed by JB FACTORY