반응형
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' 문자열 메세지를 출력하게 된다.
반응형
'프로그래밍 > MSSQL 정리필요' 카테고리의 다른 글
[DB_MSSQL] INDEX 컬럼 (WHERE IDX=1+1 vs WHERE IDX-1=1) (0) | 2017.02.15 |
---|---|
[DB_MSSQL] 프로시저 실행 결과 테이블에 입력 (0) | 2017.02.14 |
[DB_MSSQL] WHERE LIKE '%Parameter%' (LIKE절에 파라미터 사용) (0) | 2017.02.14 |
[DB_MSSQL] INDEX 인덱스 (0) | 2017.02.13 |
[DB_MSSQL] 일/주/월/년도/요일 별로 카운트 (0) | 2017.02.13 |