MySQL에서 LOOP 문은 반복문의 한 종류로, 특정 작업을 반복 수행할 때 사용됩니다. 이 구문은 무한 루프를 기본으로 하며, 종료 조건을 명시적으로 설정해야 합니다. 종료 조건은 보통 LEAVE 문과 같은 명령을 사용하여 구현합니다.
LOOP는 MySQL 저장 프로시저나 함수 내에서 실행되는 블록(block) 내에서 사용되며, 고유한 레이블(label)을 통해 구문을 정의하고 제어합니다. 레이블은 루프의 시작과 종료를 명확히 구분짓는 역할을 하며, 여러 반복문을 중첩해서 사용할 때 특히 유용합니다.
문법
[레이블]: LOOP
-- 반복 수행할 SQL 코드
IF 조건 THEN
LEAVE [레이블];
END IF;
END LOOP [레이블];
LOOP 문은 단순히 SQL 구문을 반복하는 구조로 설계되어 있으며, 작업을 계속 반복하다가 LEAVE 문이 실행될 때 종료됩니다.
예시 1: 기본 사용
아래는 1부터 5까지 숫자를 출력하는 간단한 LOOP 문 예제입니다.
DELIMITER //
CREATE PROCEDURE simple_loop()
BEGIN
DECLARE i INT DEFAULT 1; -- 변수 i 초기화
simple_loop_label: LOOP
-- 현재 반복 번호 출력
SELECT i AS Iteration;
-- i가 5 이상일 때 루프 종료
IF i >= 5 THEN
LEAVE simple_loop_label;
END IF;
-- i 값을 증가
SET i = i + 1;
END LOOP simple_loop_label;
END; //
DELIMITER ;
실행
CALL simple_loop();
출력
+--+
| Iteration |
+--+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+--+
예시 2: 중첩된 LOOP 사용
아래 예는 중첩된 LOOP을 통해 테이블을 2개의 루프에서 반복 처리하는 방식입니다.
DELIMITER //
CREATE PROCEDURE nested_loop_example()
BEGIN
DECLARE outer_counter INT DEFAULT 1; -- 외부 루프 변수
DECLARE inner_counter INT; -- 내부 루프 변수
outer_loop: LOOP
SET inner_counter = 1; -- 내포된 루프 초기화
-- OUTER 루프 실행 메시지
SELECT CONCAT('Outer Iteration: ', outer_counter) AS Message;
inner_loop: LOOP
-- 내부 루프 실행
SELECT CONCAT('Inner Iteration: ', inner_counter) AS Message;
-- 내부 루프 종료 조건
IF inner_counter >= 3 THEN
LEAVE inner_loop;
END IF;
-- 내부 루프 카운터 증가
SET inner_counter = inner_counter + 1;
END LOOP inner_loop;
-- 외부 루프 종료 조건
IF outer_counter >= 2 THEN
LEAVE outer_loop;
END IF;
-- 외부 루프 카운터 증가
SET outer_counter = outer_counter + 1;
END LOOP outer_loop;
END; //
DELIMITER ;
실행
CALL nested_loop_example();
출력
+--+
| Message |
+--+
| Outer Iteration: 1 |
| Inner Iteration: 1 |
| Inner Iteration: 2 |
| Inner Iteration: 3 |
| Outer Iteration: 2 |
| Inner Iteration: 1 |
| Inner Iteration: 2 |
| Inner Iteration: 3 |
+--+
LOOP 문 활용 시 팁
1. 적절한 종료 조건 사용: LOOP 문은 기본적으로 무한 루프 구조를 가집니다. 종료 조건을 명확히 설정하지 않을 경우, 무한 루프에 빠질 수 있으므로 반드시 LEAVE 문을 사용해 종료 로직을 추가하세요.
2. 레이블 이름 명확화: 루프에 고유한 레이블 이름을 지정하여, 코드 가독성을 높이고 중첩 루프에서도 제어를 쉽도록 하세요.
3. 대체 반복문 고려: 단순한 반복 조건을 사용할 때는 WHILE 또는 REPEAT와 같은 반복문이 코드 가독성 면에서 더 유리할 수 있습니다. 복잡한 반복 구조에서 LOOP 문이 더 적합합니다.
4. 성능 주의: 루프 내부에서 복잡한 계산이나 대량 데이터 작업이 이루어질 경우, 성능 저하가 발생할 수 있습니다. 가능하다면 SQL 집합 연산을 활용하여 루프를 줄이는 방향도 고려하세요.
MySQL의 LOOP 문은 간단하지만 매우 강력한 반복 제어 도구입니다. 주어진 조건에 따라 유연한 실행 흐름을 구성할 수 있으므로, 저장 프로시저의 논리적 복잡성을 다룰 때 유용하게 사용할 수 있습니다.
'SQL > MYSQL' 카테고리의 다른 글
[MySQL] Cursor CLOSE 문 사용 방법 및 예시 (2) | 2024.12.29 |
---|---|
[MySQL] WHILE 문 사용 방법 및 예시 (1) | 2024.12.28 |
[MySQL] RETURN 문 사용 방법 및 예시 (0) | 2024.12.27 |
[MySQL] REPEAT 문 사용 방법 및 예시 (0) | 2024.12.27 |
[MySQL] LEAVE 문 사용 방법 및 예시 (0) | 2024.12.26 |
[MySQL] ITERATE 사용 방법 및 예시 (0) | 2024.12.24 |
[MySQL] IF 문 사용 방법 및 예시 (0) | 2024.12.23 |
[MySQL] CASE 문 사용 방법 및 예시 (1) | 2024.12.20 |