Utilizzo di GOTO
In corrispondenza dell'istruzione GOTO, l'esecuzione di un batch Transact-SQL passa a un'etichetta, in modo che le istruzioni incluse tra GOTO e l'etichetta siano ignorate. La sintassi del nome dell'etichetta è la seguente:
label_name:
È consigliabile non utilizzare spesso l'istruzione GOTO per non complicare la logica di un batch Transact-SQL. In genere è possibile implementare la logica di GOTO tramite le altre istruzioni per il controllo di flusso. GOTO è tuttavia l'istruzione migliore per la risoluzione di istruzioni per il controllo di flusso particolarmente complesse.
L'etichetta di destinazione di un'istruzione GOTO identifica solo la destinazione del passaggio dell'esecuzione e non consente pertanto di isolare le istruzioni che la seguono da quelle che la precedono. Se vengono eseguite le istruzioni che precedono l'etichetta, questa viene ignorata e vengono eseguite le istruzioni che la seguono, a meno che l'istruzione che precede l'etichetta non sia un'istruzione per il controllo di flusso, ad esempio RETURN.
Di seguito è riportato un esempio di 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.