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.
Convenções da 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 booliana 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 Criar um procedimento armazenado. 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).