ELSE (IF...ELSE) (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Impose les conditions d'exécution d'une instruction Transact-SQL. L’instruction Transact-SQL (sql_statement) qui suit Boolean_expression est exécutée si Boolean_expression a la valeur TRUE. Le mot clé facultatif ELSE est une instruction Transact-SQL alternative exécutée lorsque la valeur renvoyée par Boolean_expression est FALSE ou NULL.

Conventions de la syntaxe Transact-SQL

Syntaxe

IF Boolean_expression   
     { sql_statement | statement_block }   
[ ELSE   
     { sql_statement | statement_block } ]   

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

Boolean_expression
Expression qui renvoie TRUE ou FALSE. Si Boolean_expression contient une instruction SELECT, cette dernière doit être mise entre parenthèses.

{ sql_statement | statement_block }
Toute instruction ou tout groupe d'instructions Transact-SQL valide tel que défini dans un bloc d'instructions. Pour définir un bloc (traitement) d'instructions, utilisez les mots clé BEGIN et END du langage de contrôle de flux. Bien que toutes les instructions Transact-SQL soient valides à l’intérieur d’un bloc BEGIN…END, certaines instructions Transact-SQL ne doivent pas être regroupées dans un même lot (bloc d’instructions).

Types des résultats

Booléen

Exemples

R. Utilisation d'une expression booléenne simple

L'exemple suivant comprend une expression booléenne simple (1=1) ayant la valeur true. Par conséquent, il imprime la première instruction.

IF 1 = 1 PRINT 'Boolean_expression is true.'  
ELSE PRINT 'Boolean_expression is false.' ;  

L'exemple suivant comprend une expression booléenne simple (1=2) ayant la valeur false. Par conséquent, il imprime la seconde instruction.

IF 1 = 2 PRINT 'Boolean_expression is true.'  
ELSE PRINT 'Boolean_expression is false.' ;  
GO  

B. Utilisation d'une requête dans le cadre d'une expression booléenne

L'exemple suivant exécute une requête dans le cadre de l'expression booléenne. Étant donné que 10 vélos de la table Product répondent à la clause WHERE, la première instruction print s'exécute. Remplacez > 5 par > 15 pour voir comment la deuxième partie de l'instruction pourrait s'exécuter.

USE AdventureWorks2022;  
GO  
IF   
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5  
PRINT 'There are more than 5 Touring-3000 bicycles.'  
ELSE PRINT 'There are 5 or less Touring-3000 bicycles.' ;  
GO  

C. Utilisation d'un bloc d'instructions

L'exemple suivant exécute une requête dans le cadre de l'expression booléenne, puis exécute des blocs d'instructions légèrement différents selon le résultat de l'expression booléenne. Chaque bloc d'instructions commence par BEGIN et se termine par END.

USE AdventureWorks2022;  
GO  
DECLARE @AvgWeight DECIMAL(8,2), @BikeCount INT  
IF   
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5  
BEGIN  
   SET @BikeCount =   
        (SELECT COUNT(*)   
         FROM Production.Product   
         WHERE Name LIKE 'Touring-3000%');  
   SET @AvgWeight =   
        (SELECT AVG(Weight)   
         FROM Production.Product   
         WHERE Name LIKE 'Touring-3000%');  
   PRINT 'There are ' + CAST(@BikeCount AS VARCHAR(3)) + ' Touring-3000 bikes.'  
   PRINT 'The average weight of the top 5 Touring-3000 bikes is ' + CAST(@AvgWeight AS VARCHAR(8)) + '.';  
END  
ELSE   
BEGIN  
SET @AvgWeight =   
        (SELECT AVG(Weight)  
         FROM Production.Product   
         WHERE Name LIKE 'Touring-3000%' );  
   PRINT 'Average weight of the Touring-3000 bikes is ' + CAST(@AvgWeight AS VARCHAR(8)) + '.' ;  
END ;  
GO  

D. Utilisation d'instructions IF...ELSE imbriquées

L’exemple suivant montre comment une instruction IF ... ELSE peut s’imbriquer dans une autre. Définissez la variable @Number à 5, 50 et 500 pour tester chaque instruction.

DECLARE @Number INT;  
SET @Number = 50;  
IF @Number > 100  
   PRINT 'The number is large.';  
ELSE   
   BEGIN  
      IF @Number < 10  
      PRINT 'The number is small.';  
   ELSE  
      PRINT 'The number is medium.';  
   END ;  
GO  

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

E. Utilisation d’une requête dans le cadre d’une expression booléenne

L’exemple suivant utilise IF...ELSE pour déterminer quelle réponse donner à l’utilisateur entre deux réponses, en fonction du poids d’un élément dans la table DimProduct.

-- Uses AdventureWorks  
  
DECLARE @maxWeight FLOAT, @productKey INTEGER  
SET @maxWeight = 100.00  
SET @productKey = 424  
IF @maxWeight <= (SELECT Weight FROM DimProduct WHERE ProductKey=@productKey)   
    (SELECT @productKey, EnglishDescription, Weight, 'This product is too heavy to ship and is only available for pickup.' FROM DimProduct WHERE ProductKey=@productKey)  
ELSE  
    (SELECT @productKey, EnglishDescription, Weight, 'This product is available for shipping or pickup.' FROM DimProduct WHERE ProductKey=@productKey)  

Voir aussi

ALTER TRIGGER (Transact-SQL)
Langage de contrôle de flux (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
IF...ELSE (Transact-SQL)