2010년 7월 8일 목요일

[MySQL Stored Procedure]커서의 사용

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;

 

Nested Cursor Loops
 - 하나의 커서 종료후 not found변수를 reset한다.
 - NOT FOUND의 경우 커서별로 지정할 수 있다(같은 블럭내에서는 하나의 not found변수만 활성화)

 

 

 

댓글 없음:

댓글 쓰기