티스토리 뷰

SSMS

반복문

WPOWERKKFSLDFK 2026. 6. 15. 22:07

 

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/09   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함