http://dbguide.tistory.com/entry/MySQL-5X-FUNCTIONPROCEDURE-%EB%A7%8C%EB%93%A4%EA%B8%B0%EC%98%88%EC%A0%9C




이번엔 커서를...

 

delimiter $$

 

DROP PROCEDURE IF EXISTS proc_name$$

CREATE PROCEDURE proc_name()
BEGIN 

DECLARE cur_state INT DEFAULT '0'; 
DECLARE copy_column1 INT DEFAULT '0'; 
DECLARE copy_column2 INT DEFAULT '0'; 
DECLARE result_count INT DEFAULT '0';

 

DECLARE cur CURSOR FOR SELECT column1, column2 FROM table1;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET cur_state = 1;

 

OPEN cur;

REPEAT

FETCH cur INTO copy_column1, copy_column2; →커서 이동 및 결과 매칭

IF NOT cur_state THEN →커서 상태 체크

UPDATE ...;
SET result_count = result_count + 1;

END IF;

UNTIL cur_state END REPEAT;

CLOSE cur;

 

IF result_count > 0 THEN

SELECT result_count;

ELSE

SELECT 0;

END IF;

END $$

 

delimiter ;

 

      : 커서 정의 - cur은 'SELECT column1, column2 FROM table1;'의 커서이다.

      : 커서 상태 핸들러 지정(※'02000'의 의미는 잘모르겠다.)

      : 커서 열고 닫기.

      : do while문과 비슷한 문법.