ELSE (IF...ELSE) (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse 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 o boolean_expression será executada se o boolean_expression for avaliado como TRUE
. A palavra-chave opcional ELSE
é uma instrução Transact-SQL alternativa que é executada quando boolean_expression avalia como FALSE
ou NULL
.
Convenções de sintaxe de 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 o boolean_expression contiver uma SELECT
instrução, a SELECT
instrução deverá ser colocada entre parênteses.
{ sql_statement | statement_block }
Qualquer instrução Transact-SQL válida ou agrupamento de instruções, conforme definido com um bloco de instruções. Para definir um bloco de instrução (lote), use as palavras-chave BEGIN
de linguagem de controle de fluxo e END
. Embora todas as instruções Transact-SQL sejam válidas em um BEGIN...END
bloco, determinadas instruções Transact-SQL não devem ser agrupadas no mesmo lote (bloco de instrução).
Tipos de retorno
Booliano
Exemplos
Os exemplos de código do Transact-SQL deste artigo usa o banco de dados de exemplo AdventureWorks2022
ou AdventureWorksDW2022
, que pode ser baixado da home page Microsoft SQL Server Samples and Community Projects.
R. Usar uma expressão booleana
O exemplo a seguir tem uma expressão booleana (1 = 1
) que é verdadeira 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 booleana (1 = 2
) que é falsa e, portanto, imprime a segunda instrução.
IF 1 = 2 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
GO
B. Usar uma consulta como parte de uma expressão booleana
O exemplo a seguir executa uma consulta como parte da expressão booliana. Como há 10 bicicletas na Product
tabela que atendem à condição da WHERE
cláusula, a primeira instrução de impressão é executada. Você pode mudar > 5
para > 15
, para ver como a segunda parte da instrução pode 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. Usar 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. Use nested IF... Instruções ELSE
O exemplo a seguir mostra como uma IF...ELSE
instrução pode ser aninhada dentro de outra. Defina a @Number
variável 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 mostrar ao usuário, com base no peso de um item na DimProduct
tabela no AdventureWorksDW2012
banco de dados.
DECLARE @maxWeight FLOAT, @productKey INT;
SET @maxWeight = 100.00;
SET @productKey = 424;
IF @maxWeight <= (
SELECT [Weight]
FROM DimProduct
WHERE ProductKey = @productKey;
)
BEGIN
SELECT @productKey,
EnglishDescription,
[Weight],
'This product is too heavy to ship and is only available for pickup.'
FROM DimProduct
WHERE ProductKey = @productKey;
END
ELSE
BEGIN
SELECT @productKey,
EnglishDescription,
[Weight],
'This product is available for shipping or pickup.'
FROM DimProduct
WHERE ProductKey = @productKey;
END