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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure даAzure Synapse Analytics (хранилище данных SQL) даParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Задает условия для выполнения инструкции Transact-SQLTransact-SQL.Imposes conditions on the execution of a Transact-SQLTransact-SQL statement. Инструкция языка Transact-SQLTransact-SQL, следующая за ключевым словом IF и его условием, выполняется только в том случае, если логическое выражение возвращает TRUE.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. Необязательное ключевое слово ELSE представляет другую инструкцию языка Transact-SQLTransact-SQL, которая выполняется, если условие IF не удовлетворяется и логическое выражение возвращает FALSE.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.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

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

АргументыArguments

Boolean_expressionBoolean_expression
Выражение, возвращающее значение TRUE или FALSE.Is an expression that returns TRUE or FALSE. Если логическое выражение содержит инструкцию SELECT, инструкция SELECT должна быть заключена в скобки.If the Boolean expression contains a SELECT statement, the SELECT statement must be enclosed in parentheses.

{ sql_statement| statement_block }{ sql_statement| statement_block }
Любая инструкция или группа инструкций языка Transact-SQLTransact-SQL, указанная с помощью блока инструкций.Is any Transact-SQLTransact-SQL statement or statement grouping as defined by using a statement block. Без использования блока инструкций условия IF и ELSE могут повлиять на выполнение только одной инструкции языка Transact-SQLTransact-SQL.Unless a statement block is used, the IF or ELSE condition can affect the performance of only one Transact-SQLTransact-SQL statement.

Для определения блока инструкций используйте ключевые слова потока управления BEGIN и END.To define a statement block, use the control-of-flow keywords BEGIN and END.

RemarksRemarks

Конструкция IF...ELSE может быть использована в пакетах, хранимых процедурах и нерегламентированных запросах.An IF...ELSE construct can be used in batches, in stored procedures, and in ad hoc queries. При использовании в хранимой процедуре эта конструкция часто применяется для проверки существования некоторого параметра.When this construct is used in a stored procedure, it is frequently used to test for the existence of some parameter.

Проверки IF могут находиться внутри другого IF или следующего ELSE.IF tests can be nested after another IF or following an ELSE. Ограничение количества вложенных уровней зависит от свободной памяти.The limit to the number of nested levels depends on available memory.

ПримерExample

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

Дополнительные сведения см. в разделе ELSE (IF...ELSE) (Transact-SQL).For more examples, see ELSE (IF...ELSE) (Transact-SQL).

Примеры: Azure Synapse Analytics (хранилище данных SQL)Azure Synapse Analytics (SQL DW) и Параллельное хранилище данныхParallel Data WarehouseExamples: Azure Synapse Analytics (хранилище данных SQL)Azure Synapse Analytics (SQL DW) and Параллельное хранилище данныхParallel Data Warehouse

В следующем примере используется IF...ELSE для определения того, какой из двух ответов показать пользователю, на основе веса элемента в таблице DimProduct.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

См. также:See 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)
Язык управления потоком (Transact-SQL) ELSE (IF...ELSE) (Transact-SQL)Control-of-Flow Language (Transact-SQL) ELSE (IF...ELSE) (Transact-SQL)