본문 바로가기

ORACLE/PL/SQL

오라클 커서(CURSOR)

1. 커서의 정의
 

커서란 SQL Plus에서 사용자가 실행한 SQL문의 단위를 의미합니다.
오라클에서 수행한 모든 쿼리문은 커서 단위로  처리합니다.

PL/SQL의 SQL문처럼 하나의 결과를 리턴하는 경우 커서 없이도 SQL문의 실행결과가 암시적으로 커서에 저장되므로 이를 암시적 커서라고 합니다.
 


SQL문을 수행한 후에 결과로 얻어지는 행이 여러 개일 경우에는 암시적은 커서에 정보를 저장할 수 없기에 에러가 발생합니다. 이럴 경우에는 반드시 명시적인 커서를 사용해야 합니다.


명시적인 커서는 PL/SQL 레코드(RECORD)와 PL/SQL의 테이블(TABLE)을 결합한 것으로서 프로그램 언어의 구조체 배열과 유사합니다
------------------------------------------------------------------------------------------------------
(오라클에서 CURSOR란 시스템 글로벌 영역의 공유 풀 내에 저장공간을 사용하여 사용자가 SQL 문을 실행시키면 결과값을 저장공간에 가지고 있다가 원하는 시기에 순차적으로 fetch해 처리하여 해당 결과 셋을 프로그래밍적으로 접근할수 있게 도와주는 기능이다.)
------------------------------------------------------------------------------------------------------


2. 커서의 사용(명시적 커서)
 

1) 커서를 선언한다.
   CURSOR cur_name
2)커서를 오픈한다
  OPEN cur_name
3)커서에 조회한 결과를 인출해 지정한다.
  FECTCH cur_name ....
4)커서를 닫는다
  CLOSE cur_name

------------------------------------------------------------------------------------------------------
DECLARE --커서 정의
 CURSOR cur_name IS SELECT  statement --커서의 선언
BEGIN 
  OPEN cur_name; --cursor분석 및 실행
  LOOP
     FETCH cur_name into variable1, variable2; --cursor의 현재 행을  변수에 로드
  END LOOP; --가져올 행이 없으면 종료
  CLOSE cur_name; --커서를 닫는다
END;
/
------------------------------------------------------------------------------------------------------



3. 특정 부서의 평균급여와 사원수를 출력


출처 :  http://hb.hengki.net/98 





'ORACLE > PL/SQL' 카테고리의 다른 글

파라미터가 있는 커서 정리  (0) 2012.03.23
파라미터가 있는 커서  (0) 2012.03.22
[문제]암시적 커서  (0) 2012.03.21
Loop / For Loop / While Loop  (0) 2012.03.20
PL/SQL 이란? (기본개념)  (0) 2012.03.17