MSSQL

[MSSQL] WHILE 반복문의 이해 및 실습

허니용 2024. 7. 11. 21:56
728x90
반응형

프로시저를 작성하다 보면 동적으로 SQL 문을 만들어야 하는 경우가 있습니다. 이럴 때 사용되는 반복문인 while을 실습하면서 이해해 보겠습니다.

 

 

MSSQL 반복문 WHILE 사용 방법
WHILE 조건
BEGIN
    처리1

    CONTINUE;  -- CONTINUE를 만나면 WHILE의 시작으로 갑니다.

    처리2

    BREAK; -- WHILE문 빠져 나오기
END

WHILE 문 사용 방법입니다.
CONTINUE를 만나면 WHILE의 시작으로 가서 조건을 다시 확인합니다.
BREAK를 만나면 WHILE 문을 종료합니다.

 

 

WHILE문 순서도


WHILE 문을 순서도(Flow Chart)로 그려보았습니다. 
위 그림의 7번에서 I가 3이어서 3 < 3은 거짓이므로 WHILE문을 빠져나가 8번으로 가게 됩니다.
연두색으로 표시한 부분이 프로그램이 실행되는 순서이니 확인해 보시기 바랍니다.

 

 

-- 시작
DECLARE -- 변수 선언
		@i	SMALLINT;

SET @i = 1;

WHILE @i < 3
BEGIN
	SELECT '♡'

	SET @i = @i + 1;	-- SET @i += 1;
END
-- 종료

위 순서도의 내용을 SQL 문으로 옮겨보았습니다.
♡(하트)가 두 번 출력됩니다.

 

 

WHILE 문에서 CONTINUE, BREAK 사용 예제
DECLARE -- 변수 선언
		  @i	SMALLINT;

SET @i = 1;

WHILE @i <= 10
BEGIN
	IF @i = 3
	BEGIN
		SET @i = @i + 1;
		CONTINUE;
	END

	IF @i = 7
		BREAK;

	IF @i % 2 = 0	-- 2로 나눈 나머지가 0인가?
	BEGIN 
		SELECT @i
	END
	ELSE
	BEGIN 
		SELECT '♡'
	END

	SET @i = @i + 1;	
END

@i를 1부터 10까지 반복하며 홀수일 때는 ♡를 출력하고 짝수일 때는 짝수를 출력하였습니다.
그리고 @i가 3일 때는 CONTINUE를 사용하여 아래 내용을 패스하였고요.
@i가 7일 때는 BREAK를 사용하여 WHILE을 종료하였습니다.

 

 

WHILE을 사용하여 동적 SQL 문 작성
DECLARE -- 변수 선언
		  @sql	NVARCHAR(MAX)
		, @i	SMALLINT;

SET @i = 1;

SET @sql = '
SELECT ';


WHILE @i <= 10
BEGIN
	IF @i = 1
		SET @sql += 'COL' + CONVERT(VARCHAR, @i)
	ELSE
		SET @sql += ', COL' + CONVERT(VARCHAR, @i)

	SET @i = @i + 1;	
END

SET @sql += '
FROM DUAL
'

PRINT @sql

WHILE문 안에 동적으로 쿼리문을 작성해서 사용해 볼 수 있겠습니다.

 

 

마무리

MSSQL에서 반복문인 WHILE 문에 대해 이해해 보고 실습해 보았습니다. 다른 프로그래밍 언어와 사용 방법이 비슷한 거 같아요.

이상 마치겠습니다.

728x90
반응형