CUSOR : 사용자가 실행한 SQL문의 단위
오라클에서 수행한 모든 쿼리문은 커서 단위로 처리함.
1) 커서의 구분
- 암시적 커서
- SQL문 처럼 하나의 결과를 리턴
- 명시적 커서
- SQL문을 실행한후 결로로 얻어지는 행이 여러개일 경우 반드시 명시
적 커서를 이용함.
2) 순서
- 커서를 선언(CUSOR cur_name)
- 커서를 선언할 때는 실행할 SELECT문을 IS다음에 서브쿼리형태로 기술
- 커서를 오픈(OPEN cur_name)
- 커서를 오픈하게 되면 커서를 선언할 때 작성한 SELECT문을 실행하게 됨.
- 커서에 조회한 결과를 인출해 저장함(FETCH cur_name...)
- FETCH 명령어를 수행하면 오픈한 SELECT문에 의해서 검색된 한개의
행의 정보를 읽어옴.
- 읽어온 정보는 변수에 저장됨,
- 그러나 SELECT문의 결과로 얻어지는 행이 여러개 일 경우
LOOP-END LOOP 와 같은 반복문을 이용해서 마지막행을 읽을때까지 수
행함.
- 만족하는 행을 발견하지 못할때,
즉 마지막 행을 읽었을때 반복문을 벗어나도록 하기 위해서는
'EXIT WHEN C1%NOTFOUNT'로 기술
- 커서를 닫음.(CLOSE cur_name)
- CLOSE 명령문 => 더이상 사용하지 않는 커서를 닫음.