ELSE (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 (sql_statement) após 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 é avaliada como FALSE ou NULL.
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 Boolean_expression contiver uma instrução SELECT, a instrução SELECT 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ções. Para definir um bloco de instruções (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ções).
Tipos de resultado
Booliano
Exemplos
a. Usando uma expressã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 AdventureWorks2022;
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 AdventureWorks2022;
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 dentro de 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
Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)
E: Usando uma consulta como parte de uma expressão booliana
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 AdventureWorks
DECLARE @maxWeight FLOAT, @productKey INTEGER
SET @maxWeight = 100.00
SET @productKey = 424
IF @maxWeight <= (SELECT Weight FROM DimProduct WHERE ProductKey=@productKey)
(SELECT @productKey, EnglishDescription, Weight, 'This product is too heavy to ship and is only available for pickup.' FROM DimProduct WHERE ProductKey=@productKey)
ELSE
(SELECT @productKey, EnglishDescription, Weight, 'This product is available for shipping or pickup.' FROM DimProduct WHERE ProductKey=@productKey)
Consulte Também
ALTER TRIGGER (Transact-SQL)
Linguagem de controle de fluxo (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
IF...ELSE (Transact-SQL)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de