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 nach dem IF-Schlüsselwort und der zugehörigen Bedingung wird nur ausgeführt, wenn die Bedingung erfüllt ist. Dies ist der Fall, wenn der boolesche Ausdruck TRUE zurückgibt. Das optionale ELSE-Schlüsselwort führt eine alternative Transact-SQL-Anweisung ein, die ausgeführt wird, wenn die IF-Bedingung nicht erfüllt ist. Dies ist der Fall, wenn der boolesche Ausdruck FALSE zurückgibt.

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 TRUE oder FALSE zurückgibt. Wenn der boolesche Ausdruck eine SELECT-Anweisung enthält, muss die SELECT-Anweisung in Klammern eingeschlossen werden.

{ sql_statement| statement_block }
Ist eine beliebige Transact-SQL-Anweisung oder -Anweisungsgruppe, die mithilfe eines Anweisungsblocks definiert wurde. Wenn kein Anweisungsblock angegeben wurde, kann sich die IF- oder ELSE-Bedingung nur auf die Leistung einer einzelnen Transact-SQL-Anweisung auswirken.

Um einen Anweisungsblock zu definieren, verwenden Sie die Schlüsselwörter zur Ablaufsteuerung BEGIN und END.

Bemerkungen

Ein IF...ELSE-Konstrukt kann in Batches, gespeicherten Prozeduren und Ad-hoc-Abfragen verwendet werden. Wenn dieses Konstrukt in einer gespeicherten Prozedur verwendet wird, wird damit das Vorhandensein bestimmter Parameter getestet.

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

Beispiel

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

Weitere Beispiele finden Sie unter ELSE (IF...ELSE) (Transact-SQL).

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

Weitere Informationen

BEGIN...END (Transact-SQL)
END (BEGIN...END) (Transact-SQL)
SELECT (Transact-SQL)
WHILE (Transact-SQL)
CASE (Transact-SQL)
Sprachkonstrukte zur Ablaufsteuerung (Transact-SQL)ELSE (IF...ELSE) (Transact-SQL)