티스토리 뷰
1. WHILE 기본 반복문 예제
SQL Server에서 반복이 필요할 때는 WHILE로 간단하게 처리할 수 있다.
아래 예제는 1부터 10까지 더하면서 누적 합계를 구하는 가장 기본적인 패턴이다.
-- 기본 WHILE 반복문 예제
DECLARE @반복값 INT, @누적값 INT;
SET @반복값 = 0;
SET @누적값 = 0;
WHILE (@반복값 < 10)
BEGIN
SET @반복값 = @반복값 + 1;
SET @누적값 = @누적값 + @반복값;
END;
-- 결과 출력
SELECT 반복값결과 = @반복값,
누적값결과 = @누적값;
- @반복값은 0에서 시작해서, WHILE 안에서 1씩 증가.
- @누적값은 증가된 @반복값을 계속 더해서 누적.
- 최종적으로는 반복값결과 = 10, 누적값결과 = 55가 나온다. (1+2+…+10)
이 패턴은 나중에 숫자 누적뿐만 아니라, 특정 카운트만큼 처리 반복할 때 기본 틀로 써먹기 좋다.
2. BREAK 사용 예제 (조건 만족 시 반복 중단)
가끔은 “범위 끝까지 돌 필요 없이, 조건을 만족하면 바로 멈추고 싶을 때”가 있다.
그럴 때 쓰는 게 BREAK다.
-- BREAK를 사용하는 WHILE 예제
DECLARE @반복값 INT, @누적값 INT;
SET @반복값 = 0;
SET @누적값 = 0;
WHILE (@반복값 < 10)
BEGIN
SET @반복값 = @반복값 + 1;
SET @누적값 = @누적값 + @반복값;
IF @누적값 >= 40
BREAK;
END;
-- 결과 출력
SELECT 반복값결과 = @반복값,
누적값결과 = @누적값;
- 기본 흐름은 위의 예제와 동일하게 1씩 증가시키면서 더한다.
- @누적값이 40 이상이 되는 순간 BREAK를 만나서 반복문을 바로 빠져나온다.
실제 업무에서는:
- “조건을 만족하는 데이터 1건만 찾으면 됨”
- “특정 횟수 이상 실패/오류 시 더 이상 처리하지 않음”
이런 상황에서 WHILE 안에서 카운트/합계 체크 후 BREAK로 빠져나오는 식으로 자주 쓰게 된다.
3. CONTINUE 사용 예제 (짝수만 누적)
이번에는 CONTINUE를 이용해서 특정 조건일 때 “이번 턴만 건너뛰기”를 해보자.
예제로, 1부터 10까지 중에서 짝수만 누적 합계에 더하는 코드를 만들었다.
-- CONTINUE를 사용하는 WHILE 예제 (짝수만 누적)
DECLARE @반복값 INT, @누적값 INT;
SET @반복값 = 0;
SET @누적값 = 0;
WHILE (@반복값 < 10)
BEGIN
SET @반복값 = @반복값 + 1;
-- 홀수면 아래 누적 구문을 건너뛰고 다음 반복으로 이동
IF (@반복값 % 2 = 1)
CONTINUE;
-- 여기까지 내려왔다는 건 짝수라는 뜻
SET @누적값 = @누적값 + @반복값;
END;
-- 결과 출력
SELECT 반복값결과 = @반복값,
누적값결과 = @누적값;
동작 흐름:
- @반복값은 1부터 10까지 1씩 증가.
- 홀수(@반복값 % 2 = 1)인 경우 CONTINUE를 만나서 SET @누적값 = @누적값 + @반복값; 부분은 실행하지 않고 바로 다음 반복으로 넘어감.
- 짝수일 때만 누적 로직을 타기 때문에, 최종적으로는 2 + 4 + 6 + 8 + 10 = 30이 들어간다.
업무 쿼리에서 응용할 때는:
- 조건을 만족하지 않는 행/케이스는 CONTINUE로 스킵
- 조건을 만족하는 경우에만 INSERT/UPDATE/로그 적재 등의 로직 수행
이런 식으로 if-else를 길게 쓰는 대신, “필터링용 CONTINUE”로 가독성을 정리할 때도 괜찮다.
4. WHILE / BREAK / CONTINUE 정리 메모
- WHILE
- 조건이 참인 동안 BEGIN ~ END 구문 반복 실행.
- BREAK
- WHILE 루프를 즉시 종료하고, END 다음 구문으로 넘어감.
- “이 조건이면 더 이상 돌지 말고 나가라” 할 때 사용.
- CONTINUE
- 현재 반복의 나머지 부분은 건너뛰고, 다시 WHILE 조건 검사로 점프.
- “이 조건이면 이번 턴은 스킵하고 다음 턴부터 계속 진행”할 때 사용.
'SSMS' 카테고리의 다른 글
| TRY CATCH 문 활용 (0) | 2026.06.16 |
|---|---|
| 커서(Cursor) (1) | 2026.06.15 |
| 시퀀스, 조건문 (0) | 2026.06.15 |
| SSMS 프로그래밍 (0) | 2026.06.15 |
| 조건관련 (0) | 2026.06.15 |
