본문 바로가기

프로그래밍/MSSQL 정리필요

[DB_MSSQL] return, break, goto

반응형

RETURN, BREAK, GOTO




RETURN

쿼리 실행 종료


쿼리문을 수행하다가 RETURN;을 만나게되면 더 이상 다음 쿼리문을 수행하지 않고 끝이난다.



  예제


DECLARE @Cnt INT = 500;
 
-- 첫 번째 UPDATE문
UPDATE TEST_A SET 가격 = @Cnt WHERE Seq = 1
 
IF (@Cnt < 1000)
    BEGIN
        RETURN;
        -- 여기서 쿼리문을 빠져나감
        -- 즉 아래에 있는 2번 쿼리문을 수행하지 않는다.
    END
 
-- 두 번째 UPDATE문   
UPDATE TEST_A SET 가격 = @Cnt WHERE Seq = 2


다음과 같은 쿼리문 실행 시 첫 번째 UPDATE문에 해당하는 쿼리문은 수행된다.

그러나 @Cnt의 값이 500 이므로 RETURN; 을 만나게 되면서 두 번째의 UPDATE문은 수행하지 않게 된다.






BREAK

반복문 탈출


반복문에서 BREAK;을 만나면 해당 반복문을 빠져나간다.



  예제


DECLARE @Cnt INT = 1;
 
WHILE (@Cnt <= 500)
    BEGIN
        IF (@Cnt = 10)
            BREAK;
        SET @Cnt = @Cnt +1;
    END

@Cnt의 값이 1,2,3,4,5,6,7,8,9까지는 정상적으로 반복문을 돌다가
10이 되는 순간 BREAK;를 만나면서 반복문을 빠져나오게 된다.




GOTO

실행흐름을 지정된 레이블로 변경


다음 실행될 쿼리문을 건너뛰고 지정된 레이블에서 처리를 이어간다.



  예제


DECLARE @FLAG CHAR(1) = 'N' IF (@FLAG = 'N') BEGIN GOTO GO2 END GO1: BEGIN PRINT 'FLAG:Y' END GO2: BEGIN PRINT 'FLAG:N' END


@FLAG 의 값이 N이기 때문에 GOTO GO2가 실행된다.

즉, GO1을 건너뛰고 GO2로 가게 된다.


따라서 결과로 'FLAG:N' 문자열 메세지를 출력하게 된다.

반응형