SE... ELSE (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

Impõe condições à execução de uma declaração Transact-SQL. A instrução Transact-SQL que segue uma IF palavra-chave e sua condição é executada se a condição for satisfeita: a expressão booleana retorna TRUE. A palavra-chave opcional ELSE introduz outra instrução Transact-SQL que é executada quando a IF condição não é satisfeita: a expressão booleana retorna FALSE.

Transact-SQL convenções de sintaxe

Syntax

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

Arguments

boolean_expression

Uma expressão que retorna TRUE ou FALSE. Se a expressão booleana contiver uma SELECT instrução, a SELECT instrução deve ser colocada entre parênteses.

{ sql_statement | statement_block }

Qualquer instrução Transact-SQL ou agrupamento de instruções, conforme definido usando um bloco de instruções. A menos que um bloco de instrução seja usado, a IF condição ou ELSE pode afetar o desempenho de apenas uma instrução Transact-SQL.

Para definir um bloco de instruções, use as palavras-chave BEGIN control-of-flow e END.

Remarks

Uma IF...ELSE construção pode ser usada em lotes, em procedimentos armazenados e em consultas ad hoc. Quando essa construção é usada em um procedimento armazenado, geralmente é para testar a existência de algum parâmetro.

IF Os testes podem ser aninhados após outro IF ou após um ELSEarquivo . O limite para o número de níveis aninhados depende da memória disponível.

Examples

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

Para obter mais exemplos, consulte ELSE (SE... ELSE).

Exemplos: Azure Synapse Analytics

O exemplo a seguir usa IF...ELSE para determinar qual das duas respostas mostrar ao usuário, com base no peso de um item na DimProduct tabela.

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