Delen via


IF...ELSE (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric Preview

Legt voorwaarden op voor de uitvoering van een Transact-SQL verklaring. De Transact-SQL-instructie die volgt op een IF trefwoord en de voorwaarde wordt uitgevoerd als aan de voorwaarde wordt voldaan: de Boole-expressie retourneert TRUE. Het optionele ELSE trefwoord introduceert een andere Transact-SQL instructie die wordt uitgevoerd wanneer niet aan de IF voorwaarde wordt voldaan: de Boole-expressie retourneert FALSE.

Transact-SQL syntaxis-conventies

Syntax

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

Arguments

boolean_expression

Een expressie die retourneert TRUE of FALSE. Als de Boole-expressie een SELECT instructie bevat, moet de SELECT instructie tussen haakjes staan.

{ sql_statement | statement_block }

Elke Transact-SQL instructie of instructiegroepering zoals gedefinieerd met behulp van een instructieblok. Tenzij een instructieblok wordt gebruikt, kan de IF of ELSE voorwaarde van invloed zijn op de prestaties van slechts één Transact-SQL instructie.

Als u een instructieblok wilt definiëren, gebruikt u de trefwoorden BEGIN voor besturingsstromen en END.

Remarks

Een IF...ELSE constructie kan worden gebruikt in batches, in opgeslagen procedures en in ad-hocquery's. Wanneer deze constructie wordt gebruikt in een opgeslagen procedure, is het meestal om te testen op het bestaan van een bepaalde parameter.

IF tests kunnen worden genest na een andere IF of na een ELSE. De limiet voor het aantal geneste niveaus is afhankelijk van het beschikbare geheugen.

Examples

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

Zie ELSE (ALS) voor meer voorbeelden. ELSE).

Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)

In het volgende voorbeeld wordt gebruikt IF...ELSE om te bepalen welke van twee antwoorden de gebruiker moet weergeven, op basis van het gewicht van een item in de DimProduct tabel.

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