sql continue에 대한 질문 0 2 881

by 달콤꼬야 [어플리케이션관련] [2017.01.23 13:42:38]


DECLARE @i INT = 1 -- 1부터 시작
DECLARE @hap BIGINT = 0 -- 합계


WHILE (@i <= 100)
BEGIN
    IF(@i % 7 = 0)
        BEGIN
            SET @i += 1

            CONTINUE
        END
    ELSE
        BEGIN
            SET @hap += @i
            SET @i += 1  
        END
END
PRINT N'합계 = ' + CAST(@hap AS NCHAR(10))

이 쿼리와

 

DECLARE @i INT = 1 -- 1부터 시작
DECLARE @hap BIGINT = 0 -- 합계


WHILE (@i <= 100)
BEGIN
    IF(@i % 7 = 0)
        BEGIN
            SET @i += 1
        END
    SET @hap += @i
    SET @i += 1  
END
PRINT N'합계 = ' + CAST(@hap AS NCHAR(10))

 

이 쿼리가 같은 값이 나오는데요

책에서 CONTINUE를 만나면 하위 쿼리 진행없이 WHILE조건문으로 돌아간다고 봐서

제 생각에는 두번째 쿼리에서는 

 SET @i += 1 가 두번돌아서 값이 다르게 나와야 할것같은데

왜 같은 값이 나오는지 궁금합니다.

by 마농 [2017.01.23 14:18:43]

어차피 While 돌면서 수를 하나씩 증가시키는데
While 안에서 수를 한번 더 증가시키니
이는 While 돌지 않고도 While 돌린 효과죠
Continue 한것과 마찬가지 효과


While 끝난뒤 결과만 찍어보지 마시고
While 안에서 과정을 찍어 보세요.


by 달콤꼬야 [2017.01.23 16:01:48]

감사합니다. 디버깅 해보니 눈에 확 보이네요!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입