개요
2025.02.28-[MySQL] Stored Procedure - 조건문에서 프로시저 내에서 조건에 따라 실행흐름을 제어해 보았다. 이번 글에서는 반복문을 사용해보려고 한다.
WHILE
WHILE문은 조건문이 참인 경우 계속 반복하며 실행된다. 다시 말해 조건이 거짓이 되면 반복을 종료한다.
[begin_label:] WHILE search_condition DO
statement_list
END WHILE [end_label]
예시 )
아래 예시는 입력으로 받은 문자를 입력받은 수만큼 반복하여 SELECT 하는 프로시저이다.
DELIMITER &&
CREATE PROCEDURE test_procedure(
IN loop_str CHAR,
IN loop_val INT
)
BEGIN
declare idx INT DEFAULT 0;
declare result VARCHAR(100) DEFAULT '';
WHILE (idx < loop_val) DO
SET result = concat(result, loop_str);
SET idx = idx + 1;
END WHILE;
SELECT result;
END &&
DELIMITER ;
call test_procedure('*', 5);
REPEAT
REPEAT문은 조건이 참이 될 때까지 반복하여 수행한다. 즉, WHILE문과 반대로 조건이 거짓인 경우 반복을 수행한다.
[begin_label:] REPEAT
statement_list
UNTIL search_condition
END REPEAT [end_label]
또한 조건의 판단을 블럭 아래에서 하기 때문에 무조건 한 번은 반복을 수행한다는 특징을 가진다.
예시 )
아래 예시는 위에서 WHILE문으로 구현한 것을 REPEAT문으로 수정한 것이다.
DELIMITER &&
CREATE PROCEDURE test_procedure(
IN loop_str CHAR,
IN loop_val INT
)
BEGIN
declare idx INT DEFAULT 0;
declare result VARCHAR(100) DEFAULT '';
REPEAT
SET result = concat(result, loop_str);
SET idx = idx + 1;
UNTIL idx >= loop_val
END REPEAT;
SELECT result;
END &&
DELIMITER ;
call test_procedure('*', 5);
참고 문서
728x90