ELSE (IF...ELSE) (Transact-SQL)
Impone condiciones en la ejecución de una instrucción Transact-SQL. La instrucción Transact-SQL (sql_statement) que sigue la Boolean_expression se ejecuta si Boolean_expression se evalúa como TRUE. La palabra clave opcional ELSE es una instrucción Transact-SQL alternativa que se ejecuta cuando Boolean_expression se evalúa como FALSE o NULL.
Sintaxis
IF Boolean_expression { sql_statement | statement_block }
[ ELSE { sql_statement | statement_block } ]
Argumentos
Boolean_expression
Es una expresión que devuelve TRUE o FALSE. Si la expresión Boolean_expression contiene una instrucción SELECT, la instrucción SELECT deberá ir entre paréntesis.{ sql_statement | statement_block }
Se trata de cualquier instrucción o grupo de instrucciones Transact-SQL válidas definidas con un bloque de instrucciones. Para definir un bloque de instrucciones (lote), utilice las palabras clave de lenguaje de control de flujo BEGIN y END. Aunque todas las instrucciones Transact-SQL son válidas en un bloque BEGIN...END, ciertas instrucciones Transact-SQL no deben agruparse en el mismo lote (bloque de instrucciones).
Tipos de resultado
Boolean
Ejemplos
A. Ejemplos sencillos
En el ejemplo siguiente hay una expresión booleana simple (1=1) que es TRUE y, por tanto, se imprime la primera instrucción.
IF 1 = 1 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;
En el ejemplo siguiente hay una expresión booleana simple (1=2) que es FALSE y, por tanto, se imprime la segunda instrucción.
IF 1 = 2 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;
GO
B. Ejemplo del uso de una consulta
En el ejemplo siguiente se ejecuta una consulta en la expresión booleana. Dado que hay 10 bicicletas en la tabla Product que cumplen la cláusula WHERE, se ejecutará la primera instrucción de impresión. Cambie > 5 por > 15 para ver cómo podría ejecutarse la segunda parte de la instrucción.
USE AdventureWorks
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. Ejemplo del uso de un bloque de instrucciones
En el ejemplo siguiente se ejecuta una consulta en la expresión booleana y, a continuación, se ejecutan bloques de instrucciones con pequeñas diferencias que dependen del resultado de la expresión booleana. Cada bloque de instrucciones comienza con BEGIN y se completa con END.
USE AdventureWorks
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. Ejemplo de instrucciones IF/ELSE anidadas
En el ejemplo siguiente se muestra cómo se puede anidar una instrucción IF … ELSE dentro de otra. Establezca la variable @Number en 5, 50 y 500 para probar cada instrucción.
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
Vea también