아래는 커서를 사용한 프로시저의 예 입니다.
DELIMITER $$
DROP PROCEDURE IF EXISTS `디비명`.`프로시저명` $$
CREATE PROCEDURE `디비명`.`프로시저명_merge`( IN 변수1 VARCHAR(32), IN 변수2 INT )
BEGIN
DECLARE m_필드값1 VARCHAR(32);
DECLARE m_필드값2 VARCHAR(32);
DECLARE m_Done INT DEFAULT 0;
/* 여기에 커서를 정의 합니다. */
DECLARE m_Cursor CURSOR FOR
SELECT 필드1, 필드2
FROM 테이블명
WHERE 필드1 = 변수1 AND 필드2 = 변수2;
/* 데이터가 없으면 m_Done에 1 */
DECLARE CONTINUE HANDLER FOR NOT FOUND SET m_Done=1;
OPEN m_Cursor;
/* 반복합니다. */
REPEAT
/* 반환된 필드값을 변수에 담습니다. */
FETCH NEXT FROM m_Cursor INTO m_필드값1, m_필드값2;
IF NOT m_Done THEN
/* 수행할 쿼리리 여기에 작성합니다. */
INSERT INTO 테이블2( 필드명1, 필드명2 ) VALUES( m_필드값1, m_필드값2 );
END IF;
/* m_Done이 1이 될때까지 반복 합니다. */
UNTIL m_Done END REPEAT;
CLOSE m_Cursor;
END $$
DELIMITER ;
[출처] MySQL 프로시저(Procedure)에서 Cursor 사용하기|작성자 깡통
'Database > Mysql' 카테고리의 다른 글
mysql 테이블과 인덱스 설계 시 주의사항 13가지 (0) | 2015.06.23 |
---|---|
MySQL DUMP 백업 및 복원 (0) | 2010.09.20 |
load data (0) | 2010.07.19 |
mysql replication error (0) | 2010.06.28 |
LOAD XML Syntax [v5.5] (0) | 2010.04.07 |