ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SP] Cursor 사용 예제
    MySQL_Section/developer 2014. 11. 18. 15:29
    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 ;
     
    이상입니다. ^^

    | Style : Background0, Font0, Size16 |
Designed by Tistory.