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 que segue uma IF
palavra-chave e sua condição é executada se a condição for atendida: a expressão booleana retorna TRUE
. A palavra-chave opcional ELSE
apresenta outra instrução Transact-SQL que é executada quando a IF
condição não é atendida: a expressão booleana retorna FALSE
.
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 a expressão booleana contiver uma SELECT
instrução, a SELECT
instrução deverá ser colocada entre parênteses.
{ sql_statement | statement_block }
Qualquer instrução Transact-SQL ou agrupamento de instruções, conforme definido usando um bloco de instruções. A menos que um bloco de instrução seja usado, a IF
condição or ELSE
pode afetar o desempenho de apenas uma instrução Transact-SQL.
Para definir um bloco de instrução, use as palavras-chave BEGIN
de controle de fluxo e END
.
Comentários
Um IF...ELSE
constructo pode ser usado em lotes, em procedimentos armazenados e em consultas ad hoc. Quando essa construção é usada em um procedimento armazenado, geralmente é para testar a existência de algum parâmetro.
IF
Os testes podem ser aninhados após o outro IF
ou após um ELSE
. O limite do número de níveis aninhados depende da memória disponível.
Exemplos
IF DATENAME(weekday, GETDATE()) IN (N'Saturday', N'Sunday')
SELECT 'Weekend';
ELSE
SELECT 'Weekday';
Para mais exemplos, consulte ELSE (IF... ELSE).
Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)
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 AdventureWorksDW
DECLARE @maxWeight FLOAT, @productKey INT;
SET @maxWeight = 100.00;
SET @productKey = 424;
IF @maxWeight <= (
SELECT Weight
FROM DimProduct
WHERE ProductKey = @productKey
)
SELECT @productKey AS ProductKey,
EnglishDescription,
Weight,
'This product is too heavy to ship and is only available for pickup.' AS ShippingStatus
FROM DimProduct
WHERE ProductKey = @productKey;
ELSE
SELECT @productKey AS ProductKey,
EnglishDescription,
Weight,
'This product is available for shipping or pickup.' AS ShippingStatus
FROM DimProduct
WHERE ProductKey = @productKey;