Share via


IF...ELSE (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Legt Bedingungen für die Ausführung einer Transact-SQL-Anweisung fest. Die Transact-SQL-Anweisung, die einem IF Schlüsselwort (keyword) folgt und dessen Bedingung ausgeführt wird, wenn die Bedingung erfüllt ist: der boolesche Ausdruck gibt TRUEzurück. Die optionale ELSE Schlüsselwort (keyword) 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ückFALSE.

Transact-SQL-Syntaxkonventionen

Syntax

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

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

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 IFELSE Bedingung nur die Leistung einer Transact-SQL-Anweisung beeinflussen.

Verwenden Sie zum Definieren eines Anweisungsblocks die Steuerung des Flusses Schlüsselwort (keyword) und BEGINEND.

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;