데이터베이스 커서는 데이터베이스의 레코드를 순회할 수 있는 메커니즘입니다. 다른 프로그래밍 언어의 반복자(iterator)와 같이 레코드 검색, 추가, 제거와 같은 처리를 순회와 함께할 때 용이하게 만들어줍니다.
주로 데이터베이스 프로그래머가 데이터베이스 시스템 쿼리에서 반환된 전체 결과중 개별 행의 조작을 한 번에 처리하는 데 사용됩니다.
SQL 프로시저(Procedure)에서 커서를 사용하면 결과 집합(데이터 행 집합)을 정의하고 행 단위로 복잡한 논리를 수행할 수 있습니다.
SAMPLE CURSOR KNOWN AS EE
CREATE OR REPLACE
PROCEDURE EE AS
BEGIN
DECLARE
v_employeeID EMPLOYEES_DETAILS.EMPLOYEE_ID%TYPE;
v_FirstName EMPLOYEES_DETAILS.FIRST_NAME%TYPE;
v_LASTName EMPLOYEES_DETAILS.LAST_NAME%TYPE;
v_JOB_ID EMPLOYEES_DETAILS.JOB_ID%TYPE:= 'IT_PROG';
// 커서 선언
CURSOR c_EMPLOYEES_DETAILS IS
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES_DETAILS
WHERE JOB_ID ='v_JOB_ID';
// 커서 오픈, 결과 집합 설정
BEGIN
OPEN c_EMPLOYEES_DETAILS;
LOOP
// 한 번에 한 행씩 커서에서 필요에 따라 데이터를 지역 변수로 가져옴.
FETCH c_EMPLOYEES_DETAILS INTO v_employeeID,v_FirstName,v_LASTName;
DBMS_OUTPUT.put_line(v_employeeID);
DBMS_OUTPUT.put_line(v_FirstName);
DBMS_OUTPUT.put_line(v_LASTName);
EXIT WHEN c_EMPLOYEES_DETAILS%NOTFOUND;
END LOOP;
// 커서 종료
CLOSE c_EMPLOYEES_DETAILS;
END;
END;
출처