컴퓨터 과학/데이터 베이스

MySQL 프로시저 제어문 – WHILE, ITERATE, LEAVE, IF문 비교 연산자

Data Jun 2025. 8. 21. 19:55

스토어 프로시저를 작성하다 보면 반복문(WHILE), 분기문(IF), 그리고 흐름 제어(ITERATE, LEAVE)를 자주 사용하게 됩니다. 오늘은 이 구문들을 어떻게 활용하는지, 그리고 조건식에서 주의해야 할 부분을 간단히 정리해보겠습니다.

 

WHILE 반복문과 Label

MySQL의 WHILE문은 기본적으로 조건이 참일 때 반복 수행합니다
특징은 **라벨(Label)**을 붙일 수 있다는 점인데, 이를 통해 ITERATE나 LEAVE 같은 흐름 제어문과 함께 사용할 수 있습니다.

myWhile: WHILE (i <= 100) DO
    -- 반복할 로직
END WHILE;

여기서 myWhile이라는 라벨을 지정하면, 나중에 해당 반복문을 가리킬 수 있습니다.

 

ITERATE와 LEAVE

  • ITERATE: 현재 반복을 건너뛰고, 다시 라벨이 붙은 WHILE문으로 돌아감
  • LEAVE: 라벨이 붙은 WHILE문을 완전히 빠져나옴
IF (i % 7 = 0) THEN
    SET i = i + 1;     
    ITERATE myWhile; -- 현재 반복 건너뛰기
END IF;

IF (hap > 1000) THEN 
    LEAVE myWhile; -- 반복 종료
END IF;

 

전체 예시 코드

DELIMITER $$
CREATE PROCEDURE whileProc2()
BEGIN
    DECLARE i INT;
    DECLARE hap INT;
    SET i = 1;
    SET hap = 0;

    myWhile: WHILE (i <= 100) DO
        IF (i % 7 = 0) THEN
            SET i = i + 1;
            ITERATE myWhile; -- 7의 배수는 건너뜀
        END IF;

        SET hap = hap + i;
        IF (hap > 1000) THEN
            LEAVE myWhile; -- 합이 1000 넘으면 종료
        END IF;

        SET i = i + 1;
    END WHILE;

    SELECT hap;
END $$
DELIMITER ;

CALL whileProc2();

정리

  • WHILE문에는 라벨을 붙여 ITERATE, LEAVE로 제어 가능
  • ITERATE: 반복 건너뛰기
  • LEAVE: 반복 종료
  • IF 조건식에서는 =가 비교 연산자로 사용됨 → 하지만 가독성을 위해 = 권장