IF...ELSE (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Warehouse en Microsoft Fabric Base de datos SQL de Microsoft Fabric
Impone condiciones en la ejecución de una instrucción Transact-SQL. La instrucción Transact-SQL que sigue una IF
palabra clave y su condición se ejecuta si se cumple la condición: la expresión booleana devuelve TRUE
. La palabra clave opcional ELSE
presenta otra instrucción Transact-SQL que se ejecuta cuando no se cumple la IF
condición: la expresión booleana devuelve FALSE
.
Convenciones de sintaxis de Transact-SQL
Sintaxis
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Argumentos
boolean_expression
Expresión que devuelve TRUE
o FALSE
. Si la expresión booleana contiene una SELECT
instrucción , la SELECT
instrucción debe incluirse entre paréntesis.
{ sql_statement | statement_block }
Cualquier instrucción transact-SQL o agrupación de instrucciones tal como se define mediante un bloque de instrucciones. A menos que se use un bloque de instrucciones, la IF
condición o ELSE
puede afectar al rendimiento de una sola instrucción Transact-SQL.
Para definir un bloque de instrucciones, use las palabras clave BEGIN
control-of-flow y END
.
Comentarios
Una IF...ELSE
construcción se puede usar en lotes, en procedimientos almacenados y en consultas ad hoc. Cuando esta construcción se usa en un procedimiento almacenado, normalmente es probar la existencia de algún parámetro.
IF
Las pruebas se pueden anidar después de otra IF
o después de .ELSE
El límite del número de niveles anidados depende de la memoria disponible.
Ejemplos
IF DATENAME(weekday, GETDATE()) IN (N'Saturday', N'Sunday')
SELECT 'Weekend';
ELSE
SELECT 'Weekday';
Para obtener más ejemplos, vea ELSE (IF... ELSE).
Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)
En el ejemplo siguiente se usa IF...ELSE
para determinar cuál de las dos respuestas se muestra al usuario, en función del peso de un elemento en la tabla 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;