INTO절에서 SELECT
- 오직 하나의 값만 나오게 처리해야함
커서의 생성
- 하나이상의 결과를 return하기 위해서 사용
- 커서의 선언은 모든 변수를 생성한 이후에 선언해야함
- Syntax
DECLAER cname CURSOR FOR SELECT * from dep;
커서의 사용
- OPEN : 커서를 사용하기 위해서 fetch전에 반드시 처리
- FETCH : 커서가 다음 ROW로 이동
- CLOSE : 커서를 꼭 닫아줘야함
- 전체 결과를 FETCH하는 경우 LOOP를 사용하며 이때 마지막 row을 fetch할때 "no data to fetch"에러를 발생한다 이것을 피하기 위해서 error handler을 정의해서 해결
DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_last_row_fetched=1;
커서의 Loop
- 예시
OPEN dept_csr
dept_loop : LOOP
FETCH dept_csr INTO l_id, l_name, l_location;
IF no_more_departments=1 THEN
LEAVE dept_loop;
END IF
SET l_count=l_count+1
CLOSE dept_csr;
SET no_more_departments=0;
END LOOP;
dept_loop : LOOP
FETCH dept_csr INTO l_id, l_name, l_location;
IF no_more_departments=1 THEN
LEAVE dept_loop;
END IF
SET l_count=l_count+1
CLOSE dept_csr;
SET no_more_departments=0;
END LOOP;
Nested Cursor Loops
- 하나의 커서 종료후 not found변수를 reset한다.
- NOT FOUND의 경우 커서별로 지정할 수 있다(같은 블럭내에서는 하나의 not found변수만 활성화)
댓글 없음:
댓글 쓰기