Partager via


GOTO (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Modifie le flux d'exécution vers une étiquette. Les instructions Transact-SQL faisant suite à une instruction GOTO sont ignorées et le traitement reprend à l’étiquette. Les instructions GOTO et les étiquettes peuvent être utilisées à n'importe quel endroit d'une procédure, d'un traitement d'instructions ou d'un bloc d'instructions. Les instructions GOTO peuvent être imbriquées.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

label
Point après lequel le traitement reprend si une instruction GOTO pointe sur cette étiquette. Les étiquettes doivent se conformer aux règles en vigueur pour les identificateurs. Une étiquette peut servir à insérer des commentaires et ce, qu'il existe ou non une instruction GOTO.

Remarques

Une instruction GOTO peut exister au sein d'instructions conditionnelles de contrôle de flux, de blocs d'instructions ou de procédures mais ne peut pas pointer sur une étiquette située en dehors du traitement d'instructions. Le branchement GOTO peut pointer sur une étiquette dont la définition se trouve avant ou après l'instruction GOTO.

Autorisations

Par défaut, tout utilisateur reconnu a l'autorisation d'utiliser l'instruction GOTO.

Exemples

L'exemple ci-dessous illustre l'utilisation de GOTO comme mécanisme de branche.

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.';  

Voir aussi

Langage de contrôle de flux (Transact-SQL)
BEGIN...END (Transact-SQL)
BREAK (Transact-SQL)
CONTINUE (Transact-SQL)
IF...ELSE (Transact-SQL)
WAITFOR (Transact-SQL)
WHILE (Transact-SQL)