Dela via


IF...ELSE (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Förhandsversion av Microsoft Fabric

Inför villkor för körning av en Transact-SQL-instruktion. Den Transact-SQL-instruktionen som följer ett IF nyckelord och dess villkor körs om villkoret är uppfyllt: det booleska uttrycket returnerar TRUE. Det valfria ELSE nyckelordet introducerar en annan Transact-SQL-instruktion som körs när villkoret IF inte är uppfyllt: det booleska uttrycket returnerar FALSE.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

boolean_expression

Ett uttryck som returnerar TRUE eller FALSE. Om det booleska uttrycket innehåller en SELECT -instruktion måste -instruktionen SELECT omges av parenteser.

{ sql_statement | statement_block }

Alla Transact-SQL-instruktion eller -instruktionsgruppering enligt definitionen med hjälp av ett instruktionsblock. Om inte ett instruktionsblock används kan villkoret IF eller ELSE påverka prestanda för endast en Transact-SQL-instruktion.

Om du vill definiera ett instruktionsblock använder du nyckelorden BEGIN control-of-flow och END.

Remarks

En IF...ELSE konstruktion kan användas i batchar, i lagrade procedurer och i ad hoc-frågor. När den här konstruktionen används i en lagrad procedur är det vanligtvis att testa om det finns någon parameter.

IF tester kan kapslas efter en annan IF eller följa en ELSE. Gränsen för antalet kapslade nivåer beror på tillgängligt minne.

Examples

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

Fler exempel finns i ELSE (IF... ELSE).

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

I följande exempel används IF...ELSE för att avgöra vilket av två svar som ska visas för användaren, baserat på vikten för ett objekt i DimProduct tabellen.

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