커서 | 묵시적 커서(Implicit Cursor) | 명시적 커서(Explicit Cursor) |
커서(Cursor) 명시적 커서(Explicit Cursor) | |
정의 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
● 명시적 커서는 하나 이상의 행을 액세스하는 SELECT 명령문을 처리하기 위해서사용 ● 선언부에서 명시적으로 커서 선언 ● 명시적 커서는 블록의 실행부에서 커서 조작 명령을 통해 처리 ● 명령을 이용하여 질의에 의해 반환된 행들을 한번에 한 행씩 처리 ● 커서 선언은 선언부에서, 커서 OPEN, FETCH, CLOSE 정의는 실행부에서 정의 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
처리 과정 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
① 커서 선언(DECLARE CURSOR절) : 커서는 공유풀 내의 전용 SQL 영역에 생성 ② 커서 열기(OPEN절) : 커서를 활성화하여 커서와 연관된 SELECT 명령문 실행 ③ 데이타 추출(FETCH절) : SELECT명령문에 의해 검색된 행 중에서 커서가 가리키는 행을 액세스 ④ 커서 닫기(CLOSE절) : 오픈된 커서를 비활성화 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
커서 선언 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
● 커서를 선언하고, 커서와 관련된 SELECT 명령문 정의 ● SELECT 문장에는 INTO절을 사용하지 않음 ● INTO절은 실행부의 FETCH 명령문에서 사용 ● 커서 선언 부분에서 지역 변수나 전역 변수 사용 가능 ● 커서 정의에서 사용되는 지역 변수나 전역 변수는 반드시 커서 선언 전에 정의 필요 ● 변수는 컬럼명과 다르게 선언
☞ 사용법
☞ 사용예
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
커서 열기 (OPEN) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
● 공유풀의 라이브러리 캐쉬에 설정된 커서 영역을 오픈 ● 선언된 커서와 연관된 SELECT 명령문을 실행하여 active set을 구성 ● 커서는 검색된 행으로 구성된 active set 중에서 첫 번째 행을 가르킴 ● 실행과정 - 구문분석(Parsing) : 문장이나 의미, 권한 등이 제대로 되어 있는지 검사 - 바인딩(Binding) : 변수의 값을 할당 - 실행(Excute) : 라이브러리 캐쉬에 할당된 커서 영역을 오픈하고 active set구성
☞ 사용법
☞ 사용예
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
데이타 추출 (FETCH) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
● 현재 커서가 가르키는 행의 값을 변수로 할당하는 과정 ● 커서 선언시 사용한 SELECT 명령문의 컬럼 개수와 데이타타입이 FECTH ∼ INTO절의 변수 개수, 데이타타입과 동일해야 함
☞ 사용법
- 현재 검색된 결과 행을 저장하기 위한 변수 리스트 - variable_list 변수의 개수는 커서 선언부에서 정의한 SELECT문장의 컬럼 개수와 동일 - 커서 안에서 PL/SQL 레코드 타입 설정이 가능하며, variable_list에도 사용 가능
☞ 사용예
☞ 사용예
선언하는 것과 동일한 효과를 얻을 수 있음 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
커서 | 묵시적 커서(Implicit Cursor) | 명시적 커서(Explicit Cursor) |