Partager via


IF...ELSE (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric

Impose les conditions d'exécution d'une instruction Transact-SQL. L’instruction Transact-SQL qui suit un IF mot clé et sa condition est exécutée si la condition est satisfaite : l’expression booléenne retourne TRUE. Le mot clé facultatif ELSE introduit une autre instruction Transact-SQL exécutée lorsque la IF condition n’est pas satisfaite : l’expression booléenne retourne FALSE.

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’expression booléenne contient une SELECT instruction, l’instruction SELECT doit être placée entre parenthèses.

{ sql_statement | statement_block }

Toute instruction Transact-SQL ou regroupement d’instructions tel que défini à l’aide d’un bloc d’instructions. Sauf si un bloc d’instructions est utilisé, la ou ELSE la IF condition peut affecter les performances d’une seule instruction Transact-SQL.

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

Notes

Une IF...ELSE construction peut être utilisée dans des lots, dans des procédures stockées et dans des requêtes ad hoc. Lorsque cette construction est utilisée dans une procédure stockée, il s’agit généralement de tester l’existence d’un paramètre.

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

Exemples

IF DATENAME(weekday, GETDATE()) IN (N'Saturday', N'Sunday')
    SELECT 'Weekend';
ELSE
    SELECT 'Weekday';

Pour plus d’exemples, consultez ELSE (IF... ELSE).

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

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 AdventureWorksDW

DECLARE @maxWeight FLOAT, @productKey INT;

SET @maxWeight = 100.00;
SET @productKey = 424;

IF @maxWeight <= (
        SELECT Weight
        FROM DimProduct
        WHERE ProductKey = @productKey
    )
    SELECT @productKey AS ProductKey,
        EnglishDescription,
        Weight,
        'This product is too heavy to ship and is only available for pickup.' AS ShippingStatus
    FROM DimProduct
    WHERE ProductKey = @productKey;
ELSE
    SELECT @productKey AS ProductKey,
        EnglishDescription,
        Weight,
        'This product is available for shipping or pickup.' AS ShippingStatus
    FROM DimProduct
    WHERE ProductKey = @productKey;