티스토리 뷰

program

MySQL 프로시져(procedure)

littlecarbb 2019. 12. 19. 16:26

MySQL 프로시저를 사용하다 보니 DB의 쿼리 질의 결과를 다시 재처리 하는 일이 생기더군요.

이럴때 Cursor를 이용해서 이를 처리해 주면 됩니다.

 

아래는 커서를 사용한 프로시저의 예 입니다.

 

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 사용하기|작성자 깡통

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함