Share via


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

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 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 mot clé 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;