IF...ELSE (Transact-SQL)IF...ELSE (Transact-SQL)

GILT FÜR: jaSQL Server (ab 2008) jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Legt Bedingungen für die Ausführung einer Transact-SQLTransact-SQL-Anweisung fest.Imposes conditions on the execution of a Transact-SQLTransact-SQL statement. Die Transact-SQLTransact-SQL-Anweisung nach dem IF-Schlüsselwort und der Bedingung wird nur ausgeführt, wenn die Bedingung erfüllt ist. Dies ist der Fall, wenn der boolesche Ausdruck TRUE zurückgibt.The Transact-SQLTransact-SQL statement that follows an IF keyword and its condition is executed if the condition is satisfied: the Boolean expression returns TRUE. Das optionale ELSE-Schlüsselwort führt eine alternative Transact-SQLTransact-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.The optional ELSE keyword introduces another Transact-SQLTransact-SQL statement that is executed when the IF condition is not satisfied: the Boolean expression returns FALSE.

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

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

ArgumenteArguments

Boolean_expressionBoolean_expression
Ein Ausdruck, der TRUE oder FALSE zurückgibt.Is an expression that returns TRUE or FALSE. Wenn der boolesche Ausdruck eine SELECT-Anweisung enthält, muss die SELECT-Anweisung in Klammern eingeschlossen werden.If the Boolean expression contains a SELECT statement, the SELECT statement must be enclosed in parentheses.

{ sql_statement| statement_block }{ sql_statement| statement_block }
Eine beliebige Transact-SQLTransact-SQL-Anweisung oder -Anweisungsgruppe, die mithilfe eines Anweisungsblockes definiert wurde.Is any Transact-SQLTransact-SQL statement or statement grouping as defined by using a statement block. Wenn kein Anweisungsblock angegeben wurde, steuert die IF- oder ELSE-Bedingung nur die Ausführung einer einzelnen Transact-SQLTransact-SQL-Anweisung.Unless a statement block is used, the IF or ELSE condition can affect the performance of only one Transact-SQLTransact-SQL statement.

Um einen Anweisungsblock zu definieren, verwenden Sie die Schlüsselwörter zur Ablaufsteuerung BEGIN und END.To define a statement block, use the control-of-flow keywords BEGIN and END.

RemarksRemarks

Ein IF...ELSE-Konstrukt kann in Batches, gespeicherten Prozeduren und Ad-hoc-Abfragen verwendet werden.An IF...ELSE construct can be used in batches, in stored procedures, and in ad hoc queries. Wenn dieses Konstrukt in einer gespeicherten Prozedur verwendet wird, wird damit das Vorhandensein bestimmter Parameter getestet.When this construct is used in a stored procedure, it is frequently used to test for the existence of some parameter.

IF-Tests können nach einem anderen IF oder auf ein ELSE folgend geschachtelt werden.IF tests can be nested after another IF or following an ELSE. Das Limit für die Anzahl geschachtelter Ebenen hängt vom verfügbaren Arbeitsspeicher ab.The limit to the number of nested levels depends on available memory.

BeispielExample

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

Weitere Beispiele finden Sie unter ELSE (IF...ELSE) (Transact-SQL).For more examples, see ELSE (IF...ELSE) (Transact-SQL).

Beispiele: Azure SQL Data WarehouseAzure SQL Data Warehouse und Parallel Data WarehouseParallel Data Warehouse.Examples: Azure SQL Data WarehouseAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

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.The following example uses IF...ELSE to determine which of two responses to show the user, based on the weight of an item in the DimProduct table.

-- 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 InformationenSee Also

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