IF...ELSE (Transact-SQL)

Impõe condições na execução de uma instrução Transact-SQL. A instrução Transact-SQL que segue uma palavra-chave IF e sua condição será 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 será executada quando a condição IF não for satisfeita: a expressão Booleana retorna FALSE.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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

Argumentos

  • Boolean_expression
    É uma expressão que retorna TRUE ou FALSE. Se a expressão booleana contiver uma instrução SELECT, a instrução SELECT deverá ser incluída entre parênteses.

  • { sql_statement| statement_block }
    É qualquer instrução ou agrupamento de instruções Transact-SQL, conforme definido por meio de um bloco de instruções. A menos que um bloco de instruções seja usado, a condição IF ou ELSE poderá afetar o desempenho de somente uma instrução Transact-SQL.

    Para definir um bloco de instruções, use as palavras-chave BEGIN e END de controle de fluxo.

Comentários

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

Os testes IF podem ser aninhados depois de outro IF ou seguindo um ELSE. O limite do número de níveis aninhados depende da memória disponível.

Exemplos

O exemplo a seguir usa IF…ELSE com a saída do procedimento armazenado uspGetList. Este procedimento armazenado é definido em Criando Procedimentos Armazenados. Neste exemplo, o procedimento armazenado retorna uma lista de bicicletas com um preço de tabela menor que $700. Isso faz com que a primeira instrução PRINT seja executada.

DECLARE @compareprice money, @cost money 
EXECUTE Production.uspGetList '%Bikes%', 700, 
    @compareprice OUT, 
    @cost OUTPUT
IF @cost <= @compareprice 
BEGIN
    PRINT 'These products can be purchased for less than 
    $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'
END
ELSE
    PRINT 'The prices for all products in this category exceed 
    $'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'

Para ver mais exemplos, consulte ELSE (IF...ELSE) (Transact-SQL).