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


IF...ELSE (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в базе данных Microsoft Fabric SQL в 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 } ]

Аргументы

boolean_expression

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

{ sql_statement | statement_block }

Любая инструкция Transact-SQL или группирование инструкций, определяемая с помощью блока инструкций. Если блок инструкции не используется, IF ELSE то или условие может повлиять на производительность только одной инструкции 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;