Поделиться через


IF...ELSE (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

boolean_expression

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

{ sql_statement | statement_block }

Любая инструкция Transact-SQL или группирование инструкций, определяемая с помощью блока инструкций. Если блок инструкции не используется, IFELSE то или условие может повлиять на производительность только одной инструкции Transact-SQL.

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

Замечания

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

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

Примеры

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

Дополнительные примеры см. в разделе ELSE (IF... ELSE).

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

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

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