SQL 오라클 CURSOR
CURSOR란?
하나의 고유한 SQL문에 할당된 area를 의미
오라클 서버에 의해서 수행되는 모든 SQL문에는 그 SQL문을 수행하기 위한 CURSOR가 확보됨
CURSOR의 형태
-IMPLICIT CURSOR
DML과 ONE ROW SELECT인 경우에 자동으로 선언
-EXPLICIT CURSOR
MULTI ROW SELECT 인 경우에 사용자가 선언
IMPLICIT CURSOR
SQL%ROWCOUNT : 가장 최근의 SQL문에 의해 처리된 ROW수
SQL%FOUND : 가장 최근의 SQL문에 의해 처리된 ROW의 개수가 한 개 이상이면 TRUE
SQL%NOTFOUND : 가장 최근의 SQL문에 의해 처리된 ROW의 개수가 없으면 TRUE
SQL%ISOPEN : PL/SQL은 IMPLICIT CURSOR를 사용한 우 즉시 닫기 때문에 항상 FALSE
EXPLICIT CURSOR
CURSOR의 선언
- CURSOR에 대한 이름을 부여하고 QUERY에 의한 구조를 정의
CURSOR의 활성화
- QUERY를 수행하고 변수와 BIND. 이때 현재 CURSOR와 BIND된 행을 ACTIVE SET이라 함
CURSOR로부터 데이터 FETCH
- 현재 행의 데이터를 변수에 전달
- CURSOR의 POINTER가 다음 행으로 이동
CURSOR를 비활성화
- ACTIVE SET이 RELEASE
DECLARE
CURSOR cursor명 IS
select 문장;
OPEN cursor명
FETCH cursor명 INTO 변수1, 변수2,...;
EXPLICIT CURSOR의 ATTRIBUTE
%ISOPEN : CURSOR가 OPEN되어 있으면 TRUE
%NOTFOUND : FETCH문에 의해 검색된 데이터가 없으면 TRUE
%FOUND : FETCH문에 의해 검색된 데이터가 있으면 TRUE
%ROWCOUNT : FETCH한 데이터의 총 갯수
CURSOR FOR LOOP
FOR record명 IN cursor명 loop
문장1;
문장2;
...
END LOOP;
댓글
댓글 쓰기