IF...ELSE (Transact-SQL)

Impose les conditions d'exécution d'une instruction Transact-SQL. L'instruction Transact-SQL qui suit le mot clé IF et sa condition est exécutée si la condition est remplie, c'est-à-dire lorsque l'expression booléenne renvoie la valeur TRUE. Le mot clé facultatif ELSE introduit une autre instruction Transact-SQL qui est exécutée lorsque la condition IF n'est pas remplie. L'expression booléenne renvoie alors la valeur FALSE.

Icône Lien de rubriqueConventions de la syntaxe de 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'expression booléenne contient une instruction SELECT, cette dernière doit être mise entre parenthèses.

  • { sql_statement| statement_block }
    Représente toute instruction ou tout groupe d'instructions Transact-SQL tel que défini dans un bloc d'instructions. À moins que vous n'utilisiez un bloc d'instructions, la condition IF ou ELSE ne peut affecter les performances que d'une seule instruction Transact-SQL.

    Pour définir un bloc d'instructions, utilisez les mots clés de contrôle de flux BEGIN et END.

Notes

Une construction IF...ELSE peut être utilisée dans des traitements d'instructions, des procédures stockées et des requêtes ad hoc. Lorsque cette construction est utilisée dans une procédure stockée, elle est souvent utilisée pour rechercher la présence de certains paramètres.

Les tests de la condition IF peuvent être imbriqués après une autre condition IF ou après une condition ELSE. La limite concernant le nombre de niveaux imbriqués dépend de la mémoire disponible.

Exemple

L'exemple suivant utilise IF…ELSE avec le résultat de la procédure stockée uspGetList. Cette procédure stockée est définie dans Création de procédures stockées. Dans cet exemple, la procédure stockée renvoie une liste de vélos d'un prix inférieur à 700$. La première instruction PRINT est alors exécutée.

DECLARE @compareprice money, @cost money 
EXECUTE Production.uspGetList '%Bikes%', 700, 
    @compareprice OUT, 
    @cost OUTPUT
IF @cost <= @compareprice 
BEGIN
    PRINT 'These products can be purchased for less than 
    $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'
END
ELSE
    PRINT 'The prices for all products in this category exceed 
    $'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'

Pour obtenir d'autres exemples, consultez ELSE (IF...ELSE) (Transact-SQL).