Freigeben über


IF...ELSE (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL-Analyseendpunkt in Microsoft Fabric Warehouse in Microsoft Fabric SQL-Datenbank in Microsoft Fabric

Legt Bedingungen für die Ausführung einer Transact-SQL-Anweisung fest. Die Transact-SQL-Anweisung, die einem IF Schlüsselwort folgt und dessen Bedingung ausgeführt wird, wenn die Bedingung erfüllt ist: der boolesche Ausdruck gibt zurück TRUE. Das optionale ELSE Schlüsselwort führt eine weitere Transact-SQL-Anweisung ein, die ausgeführt wird, wenn die IF Bedingung nicht erfüllt ist: der boolesche Ausdruck gibt zurück FALSE.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

boolean_expression

Ein Ausdruck, der zurückgibt TRUE oder FALSE. Wenn der boolesche Ausdruck eine SELECT Anweisung enthält, muss die SELECT Anweisung in Klammern eingeschlossen werden.

{ sql_statement | statement_block }

Jede Transact-SQL-Anweisung oder -Anweisung, die mithilfe eines Anweisungsblocks definiert ist. Sofern kein Anweisungsblock verwendet wird, kann die IF ELSE Bedingung nur die Leistung einer Transact-SQL-Anweisung beeinflussen.

Verwenden Sie zum Definieren eines Anweisungsblocks die Schlüsselwörter für die Steuerung des Flusses BEGIN und END.

Hinweise

Ein IF...ELSE Konstrukt kann in Batches, in gespeicherten Prozeduren und in Ad-hoc-Abfragen verwendet werden. Wenn dieses Konstrukt in einer gespeicherten Prozedur verwendet wird, müssen Sie in der Regel das Vorhandensein eines Parameters testen.

IF Tests können nach einem anderen IF oder nach einem ELSEanderen geschachtelt werden. Das Limit für die Anzahl geschachtelter Ebenen hängt vom verfügbaren Arbeitsspeicher ab.

Beispiele

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

Weitere Beispiele finden Sie unter ELSE (WENN... ELSE).

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

Im folgenden Beispiel wird IF...ELSE verwendet, um basierend auf der Gewichtung eines Elements in der DimProduct-Tabelle festzulegen, welche Antwort von zwei Antworten dem Benutzer angezeigt wird.

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