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

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

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

  • Boolean_expression
    Expression qui renvoie TRUE ou FALSE. Si l'argument Boolean_expression contient une instruction SELECT, cette instruction 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 d'entre elles ne doivent pas être regroupées à l'intérieur d'un même lot (bloc d'instructions).

Types des résultats

Boolean

Exemples

A.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 AdventureWorks2012;
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 AdventureWorks2012;
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 être imbriquée à l'intérieur d'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

Voir aussi

Référence

ALTER TRIGGER (Transact-SQL)

Langage de contrôle de flux (Transact-SQL)

CREATE TRIGGER (Transact-SQL)

IF...ELSE (Transact-SQL)