Sdílet prostřednictvím


KDYŽ... DALŠÍ (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Ukládá podmínky pro spuštění příkazu Transact-SQL. Příkaz Transact-SQL, který následuje za klíčovým slovem IF a jeho podmínkou, se provede, pokud je podmínka splněna: logický výraz vrátí TRUE. Volitelné ELSE klíčové slovo zavádí další příkaz Transact-SQL, který se spustí, když IF podmínka není splněna: logický výraz vrátí FALSE.

Transact-SQL konvence syntaxe

Syntax

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

Arguments

boolean_expression

Výraz, který vrací TRUE nebo FALSE. Pokud logický výraz obsahuje SELECT příkaz, SELECT musí být příkaz uzavřený v závorkách.

{ sql_statement | statement_block }

Libovolný příkaz Transact-SQL nebo seskupování příkazů podle definice pomocí bloku příkazu. Pokud se nepoužívá blok příkazu, IFELSE může podmínka ovlivnit výkon pouze jednoho příkazu Transact-SQL.

K definování bloku příkazu použijte klíčová slova BEGIN control-of-flow a END.

Remarks

Konstruktor IF...ELSE lze použít v dávkách, v uložených procedurách a v ad hoc dotazech. Pokud se tento konstruktor používá v uložené proceduře, obvykle se testuje existence některého parametru.

IF testy lze vnořit po jiném IF nebo po provedení ELSE. Limit počtu vnořených úrovní závisí na dostupné paměti.

Examples

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

Další příklady najdete v tématu ELSE (KDYŽ... ELSE).

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

Následující příklad používá IF...ELSE k určení, která ze dvou odpovědí má zobrazit uživatele na základě váhy položky v DimProduct tabulce.

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