IF...ELSE (Transact-SQL)

Область применения:yesSQL Server (все поддерживаемые версии) YesБаза данных SQL Azure YesУправляемый экземпляр SQL Azure yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

Задает условия выполнения для инструкции Transact-SQL. Инструкция Transact-SQL, указанная за ключевым словом IF, и ее условие выполняются только в том случае, если логическое выражение возвращает значение TRUE. Необязательное ключевое слово ELSE вводит еще одну инструкцию языка Transact-SQL, которая выполняется в том случае, если условие IF не выполняется, то есть логическое выражение возвращает значение FALSE.

Topic link iconСинтаксические обозначения в Transact-SQL

Синтаксис

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

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

Boolean_expression
Выражение, возвращающее значение TRUE или FALSE. Если логическое выражение содержит инструкцию SELECT, инструкция SELECT должна быть заключена в скобки.

{ sql_statement| statement_block }
Любая инструкция или группа инструкций Transact-SQL, определенная с помощью блока операторов. Если блок инструкций не используется, условия IF и ELSE могут влиять на выполнение только одной инструкции Transact-SQL.

Для определения блока инструкций используйте ключевые слова потока управления BEGIN и END.

Remarks

Конструкция IF...ELSE может быть использована в пакетах, хранимых процедурах и нерегламентированных запросах. При использовании в хранимой процедуре эта конструкция часто применяется для проверки существования некоторого параметра.

Проверки IF могут находиться внутри другого IF или следующего ELSE. Ограничение количества вложенных уровней зависит от свободной памяти.

Пример

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

Дополнительные сведения см. в статье ELSE (IF...ELSE) (Transact-SQL).

Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)

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

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

См. также:

BEGIN...END (Transact-SQL)
Операторы END (BEGIN...END) (Transact-SQL)
SELECT (Transact-SQL)
WHILE (Transact-SQL)
CASE (Transact-SQL)
Язык управления потоком (Transact-SQL)ELSE (ЕСЛИ... ELSE) (Transact-SQL)