개발자에 의해 정의되는 커서이다.

커서의 순서로는 OPEN->FETCH->CLOSE 순으로 일어난다.

먼저 예제를 보자.

CREATE OR REPLACE PROCEDURE TEST

IS

CURSOR v_cursor IS

SELECT * FROM TABLE;

v_no TABLE.NO%TYPE;

BEGIN

OPEN v_cursor;

FETCH v_cursor INTO v_no;

CLOSE v_cursor;

EXCEPTION WHEN OTHERS THEN 처리내용

END;

위에서 OPEN은 커서를 열어주는 역할을 한다. 커서 내부에서 검색이 일어나고 아무런 결과를 얻지 못다허라도 에러는 발생하지 않는다.

FETCH는 현재 데이터 행을 OUTPUT 변수에 반환하며 커서의 SELECT의 컬럼 수와 OUTPUT 변수 수가 동일해야하며 타입 역시 마찮가지이다. 이들은 한 ROW씩 데이터를 FETCH한다.

CLOSE는 마지막으로 커서를 닫아주는 역할을 한다.