Database

[MySQL] Stored Procedure - 반복문

비번변경 2025. 3. 14. 18:32

개요

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);

 

 

참고 문서

https://dev.mysql.com/doc/refman/8.4/en/while.html

https://dev.mysql.com/doc/refman/8.4/en/repeat.html

728x90