GOTO (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure

Reindirizza il flusso di esecuzione a un'etichetta. L'istruzione o le istruzioni Transact-SQL successive a GOTO vengono ignorate e l'elaborazione viene ripresa in corrispondenza dell'etichetta. È possibile utilizzare istruzioni ed etichette GOTO in qualsiasi punto di una procedura, un batch o un blocco di istruzioni. Le istruzioni GOTO possono essere nidificate.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

  
Define the label:   
label:   
Alter the execution:  
GOTO label   

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.

Argomenti

label
Posizione da cui inizia l'elaborazione se la destinazione dell'istruzione GOTO è impostata su tale etichetta. Le etichette devono essere conformi alle regole per gli identificatori. È possibile adottare le etichette come metodo per l'inserimento di commenti indipendentemente dall'utilizzo dell'istruzione GOTO.

Osservazioni

L'istruzione GOTO può essere utilizzata in istruzioni condizionali per il controllo di flusso, in blocchi di istruzioni o in procedure ma non è possibile associarla a un'etichetta all'esterno del batch. Le diramazioni implementate tramite l'istruzione GOTO possono fare riferimento a un'etichetta definita prima o dopo GOTO.

Autorizzazioni

Le autorizzazioni per l'istruzione GOTO vengono assegnate per impostazione predefinita a qualsiasi utente valido.

Esempi

Nell'esempio seguente viene illustrato come utilizzare GOTO come meccanismo di diramazione.

DECLARE @Counter int;  
SET @Counter = 1;  
WHILE @Counter < 10  
BEGIN   
    SELECT @Counter  
    SET @Counter = @Counter + 1  
    IF @Counter = 4 GOTO Branch_One --Jumps to the first branch.  
    IF @Counter = 5 GOTO Branch_Two  --This will never execute.  
END  
Branch_One:  
    SELECT 'Jumping To Branch One.'  
    GOTO Branch_Three; --This will prevent Branch_Two from executing.  
Branch_Two:  
    SELECT 'Jumping To Branch Two.'  
Branch_Three:  
    SELECT 'Jumping To Branch Three.';  

Vedere anche

Elementi del linguaggio per il controllo di flusso (Transact-SQL)
BEGIN...END (Transact-SQL)
BREAK (Transact-SQL)
CONTINUE (Transact-SQL)
IF...ELSE (Transact-SQL)
WAITFOR (Transact-SQL)
WHILE (Transact-SQL)