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;

댓글

이 블로그의 인기 게시물

javascript ===, ==, >=, <=연산자

SQL oracle 내장함수[문자열 처리]

javascript 데이터 타입과 값