[CURSOR]
- 정의
SQL 커서는 Oracle 서버에서 할당한 전용 메모리 영역에 대한 포인터이다. 커서는 SELECT 문의 결과 집합을 처리하는데 사용된다.
- 종류
1) 암시적 커서
Oracle 서버에서 SQL문을 처리하기 위해 내부적으로 생성하고 관리한다. SQL 커서 속성을 사용하면 SQL문의 결과를 테스트할 수 있다. 다음 표는 SQL 커서 속성을 나타낸 표이다.
SQL 속성 |
설명 |
SQL%FOUND |
가장 최근의 SQL문이 한 행 이상에 영향을 |
SQL%NOTFOUND |
가장 최근의 SQL문이 한 행에도 영향을 |
SQL%ROWCOUNT |
가장 최근의 SQL문에 의해 영향을 |
2) 명시적 커서
프로그래머가 명시적으로 선언한다. DECLARE를 통해서 명명된 SQL 영역을 생성하고, OPEN을 이용하여 결과 행 집합을 식별하여, FETCH를 통해서 현재 행을 변수에 로드하며 (이를 현재 행이 없을 때까지 수행할 수 있다), CLOSE를 통해서 결과 행 집합을 해제한다.다음 예제는 명시적 커서를 기본적인 방법으로 구현한 것이다. 먼저 검색된 여러 행들을 받아오는 CURSOR를 선언했다. 그리고 해당 커서를 OPEN했으며, LOOP를 활용하여 FETCH - INTO를 간편하게 수행한 모습을 볼 수 있다. LOOP를 탈출하기 위해 %NOTFOUND를 이용하여 EXIT 조건을 서술하였으며, 사용한 명시적 커서를 CLOSE하였다.
DECLARE
CURSOR emp_cur
IS
SELECT * FROM emp WHERE deptno = 10 ;
emp_rec emp%ROWTYPE ;
BEGIN
OPEN emp_cur ;
LOOP
FETCH emp_cur INTO emp_rec ;
EXIT
WHEN emp_cur%NOTFOUND ;
DBMS_OUTPUT.PUT_LINE ( emp_rec.empno || ' ' || emp_rec.ename ) ;
END LOOP ;
CLOSE emp_cur ;
END ;
/
'PL SQL' 카테고리의 다른 글
PL/SQL 예외 처리 (Exception Handling) - 3 (미리 정의되지 않은 에러) (0) | 2016.07.06 |
---|---|
PL/SQL 예외 처리 (Exception Handling) - 2 (미리 정의된 에러) (0) | 2016.07.06 |
PL/SQL 예외 처리 (Exception Handling) - 1 (예외 처리의 정의와 발생 상황, 유형) (0) | 2016.07.06 |
PL/SQL 명시적 커서, 암시적 커서 (Implicit Cursor, Explicit Cursor) - 2 (0) | 2016.07.06 |
PL/SQL Quiz1 대비 (0) | 2016.07.05 |