GOTO 사용

GOTO 문을 사용하면 Transact-SQL 일괄 처리의 실행이 특정 레이블로 이동합니다. GOTO 문과 레이블 사이에 있는 문은 아무것도 실행되지 않습니다. 레이블 이름은 다음 구문을 사용하여 정의됩니다.

label_name:

GOTO 문은 반드시 필요한 경우에만 사용합니다. GOTO 문을 너무 많이 사용하면 Transact-SQL 일괄 처리의 논리를 이해하기 힘들어집니다. GOTO를 사용하여 구현한 논리는 거의 대부분 다른 흐름 제어 문을 사용하여 구현될 수 있습니다. GOTO는 여러 번 중첩된 흐름 제어 문에서 가장 유용하게 사용됩니다.

GOTO의 대상인 레이블은 이동할 대상만 식별합니다. 레이블은 그 다음에 오는 문과 바로 앞에 오는 문을 격리하는 것 외에는 아무 것도 수행하지 않습니다. 사용자가 레이블 바로 앞의 문을 실행하면 이 레이블을 건너뛰고 레이블 바로 뒤의 문이 실행됩니다. 단, 이것은 레이블 바로 앞에 있는 문이 RETURN과 같은 흐름 제어 문이 아닐 때만 가능합니다.

다음은 GOTO의 예입니다.

IF (SELECT SYSTEM_USER()) = 'payroll'
   GOTO calculate_salary
-- Other program code would appear here.
-- When the IF statement evaluates to TRUE, the statements
-- between the GOTO and the calculate_salary label are
-- ignored. When the IF statement evaluates to FALSE the
-- statements following the GOTO are executed.
calculate_salary:
   -- Statements to calculate a salary would appear after the label.

참고 항목

참조