스토어 프로시저를 작성하다 보면 반복문(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 조건식에서는 =가 비교 연산자로 사용됨 → 하지만 가독성을 위해 = 권장
'컴퓨터 과학 > 데이터 베이스' 카테고리의 다른 글
| MySQL 스토어드 프로시저 vs 스토어드 함수 (0) | 2025.08.23 |
|---|---|
| MySQL 사용자 정의 함수 (Stored Function) 예제: 나이 계산 함수 만들기 (0) | 2025.08.23 |
| MySQL 변수 이해하기: DECLARE vs @var (0) | 2025.08.21 |
| MySQL에서 사용자 변수와 PREPARE/EXECUTE 활용하기 (0) | 2025.08.21 |
| SQL 명령어 분류 정리 – DML, DDL, DCL, TCL 비교 (0) | 2025.08.21 |