MySQL REPEAT 루프란 무엇인가?
MySQL은 조건에 따라 SQL 코드 블록을 반복적으로 실행할 수 있는 다양한 루프 문을 제공합니다. 그중 REPEAT 루프 문은 특정 조건이 충족될 때까지 코드 블록을 반복 실행하는 대표적인 반복문입니다.
REPEAT 루프의 기본 문법
REPEAT 루프의 기본적인 문법 구조는 다음과 같습니다.
REPEAT
statements;
UNTIL expression
END REPEAT
REPEAT 루프의 동작 원리
REPEAT 루프는 먼저 명령문(statements)을 실행한 후, 그다음 표현식(expression)을 평가합니다. 만약 표현식의 결과가 FALSE라면, MySQL은 해당 표현식이 TRUE로 평가될 때까지 명령문을 계속해서 반복 실행합니다.
여기서 중요한 특징은 REPEAT 루프가 명령문을 실행한 이후에 조건식을 검사한다는 점입니다. 이러한 이유로 REPEAT 루프는 후위 검사 루프(post-test loop)라고도 불립니다. 즉, 조건과 관계없이 최소 한 번은 루프 본문이 반드시 실행된다는 점에서 WHILE 루프와 차별화됩니다.
저장 프로시저에서 REPEAT 루프 사용 예제
저장 프로시저 내에서 REPEAT 루프를 실제로 어떻게 활용하는지 아래 예제를 통해 살펴보겠습니다.
mysql> DELIMITER //
mysql> CREATE PROCEDURE Repeat_Loop()
-> BEGIN
-> DECLARE A INT;
-> DECLARE XYZ Varchar(50);
-> SET A = 1;
-> SET XYZ = '';
-> REPEAT
-> SET XYZ = CONCAT(XYZ,A,',');
-> SET A = A + 1;
-> UNTIL A > 10
-> END REPEAT;
-> SELECT XYZ;
-> END //
Query OK, 0 rows affected (0.04 sec)
예제 코드 분석
위 저장 프로시저의 동작 과정을 단계별로 살펴보면 다음과 같습니다.
1. 변수 선언: 정수형 변수 A와 문자열 변수 XYZ를 선언합니다.
2. 초기화: 변수 A를 1로, XYZ를 빈 문자열로 설정합니다.
3. 반복 실행: REPEAT 루프 안에서 CONCAT 함수를 사용해 현재까지의 결과 문자열 뒤에 숫자와 쉼표를 이어 붙이고, 변수 A의 값을 1씩 증가시킵니다.
4. 종료 조건: 변수 A가 10보다 커지면(즉, 11이 되면) UNTIL 조건이 TRUE가 되어 루프가 종료됩니다.
프로시저 호출 및 실행 결과 확인
이제 생성한 프로시저를 호출하여 결과를 확인할 수 있습니다.
mysql> DELIMITER ;
mysql> CALL Repeat_Loop();
+-----------------------+
| XYZ |
+-----------------------+
| 1,2,3,4,5,6,7,8,9,10, |
+-----------------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
실행 결과를 보면 1부터 10까지의 숫자가 쉼표로 구분되어 하나의 문자열로 출력되었음을 알 수 있습니다. 이처럼 REPEAT 루프는 저장 프로시저 내에서 반복적인 데이터 처리 작업을 간결하게 구현할 수 있도록 도와주는 강력한 도구입니다.