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


IF...ELSE (Transact-SQL)

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

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

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

Syntax

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

Arguments

boolean_expression

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

{ sql_statement | statement_block }

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

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

Remarks

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

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

Examples

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;