Compartilhar via


ELSE (IF...ELSE) (Transact-SQL)

Impõe condições na execução de uma instrução Transact-SQL. A instrução Transact-SQL (sql_statement) que segue a Boolean_expression será executada se a Boolean_expression for avaliada como TRUE. A palavra-chave opcional ELSE é uma instrução Transact-SQL alternativa que é executada quando a Boolean_expression for avaliada como FALSE ou NULL.

Í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 Boolean_expression contiver uma instrução SELECT, esta deverá ser incluída entre parênteses.

  • { sql_statement | statement_block }
    É qualquer instrução Transact-SQL ou agrupamento de instruções válido, conforme definido com um bloco de instrução. Para definir um bloco de instrução (lote), use as palavras-chave BEGIN e END da linguagem de controle de fluxo. Embora todas as instruções Transact-SQL sejam válidas em um bloco BEGIN...END, certas instruções Transact-SQL não devem ser agrupadas no mesmo lote (bloco de instrução).

Tipos de resultado

Boolean

Exemplos

A. Usando uma instrução booliana simples

O exemplo a seguir tem uma expressão booliana simples (1=1) que é true e, portanto, imprime a primeira instrução.

IF 1 = 1 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;

O exemplo a seguir tem uma expressão booliana simples (1=2) que é false e, portanto, imprime a segunda instrução.

IF 1 = 2 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;
GO

B. Usando uma consulta como parte de uma expressão booliana

O exemplo a seguir executa uma consulta como parte da expressão booliana. Como há 10 bicicletas na tabela Product que atendem à cláusula WHERE, a primeira instrução de impressão será executada. Altere > 5 para > 15 para saber como a segunda parte da instrução poderia ser executada.

USE AdventureWorks2008R2;
GO
IF 
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
PRINT 'There are more than 5 Touring-3000 bicycles.'
ELSE PRINT 'There are 5 or less Touring-3000 bicycles.' ;
GO

C. Usando um bloco de instrução

O exemplo a seguir executa uma consulta como parte da expressão booliana e depois executa blocos de instrução ligeiramente diferentes com base no resultado da expressão booliana. Cada bloco de instrução começa com BEGIN e termina com END.

USE AdventureWorks2008R2;
GO
DECLARE @AvgWeight decimal(8,2), @BikeCount int
IF 
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
BEGIN
   SET @BikeCount = 
        (SELECT COUNT(*) 
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%');
   SET @AvgWeight = 
        (SELECT AVG(Weight) 
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%');
   PRINT 'There are ' + CAST(@BikeCount AS varchar(3)) + ' Touring-3000 bikes.'
   PRINT 'The average weight of the top 5 Touring-3000 bikes is ' + CAST(@AvgWeight AS varchar(8)) + '.';
END
ELSE 
BEGIN
SET @AvgWeight = 
        (SELECT AVG(Weight)
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%' );
   PRINT 'Average weight of the Touring-3000 bikes is ' + CAST(@AvgWeight AS varchar(8)) + '.' ;
END ;
GO

D. Usando instruções IF...ELSE aninhadas

O exemplo a seguir mostra como uma instrução IF … ELSE pode ser aninhada em outra. Defina a variável @Number como 5, 50, e 500 para testar cada instrução.

DECLARE @Number int;
SET @Number = 50;
IF @Number > 100
   PRINT 'The number is large.';
ELSE 
   BEGIN
      IF @Number < 10
      PRINT 'The number is small.';
   ELSE
      PRINT 'The number is medium.';
   END ;
GO