Partilhar via


IF...ELSE (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse no Microsoft Fabric

Impõe condições na execução de uma instruçã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 retornará 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.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

boolean_expression

Uma expressão que retorna TRUE ou FALSE. Se a expressão booleana contiver uma SELECT instrução, a SELECT instrução deverá 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ção. 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ção, use as palavras-chave BEGIN controle de fluxo e END.

Comentários

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 do número de níveis aninhados depende da memória disponível.

Exemplos

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 e PDW (Analytics Platform System)

O exemplo a seguir usa IF...ELSE para determinar qual das duas respostas será mostrada ao usuário, com base no peso de um item na tabela 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;