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