ELSE (IF...ELSE) (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Impone condiciones en la ejecución de una instrucción Transact-SQL. La instrucción Transact-SQL (sql_statement) tras 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.

Convenciones de sintaxis de Transact-SQL

Sintaxis

IF Boolean_expression   
     { sql_statement | statement_block }   
[ ELSE   
     { sql_statement | statement_block } ]   

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

Boolean_expression
Es una expresión que devuelve TRUE o FALSE. Si Boolean_expression contiene una instrucción SELECT, la instrucción SELECT debe 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 (proceso por lotes), 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 proceso por lotes (bloque de instrucciones).

Tipos de resultado

Boolean

Ejemplos

A. Utilizar una expresión booleana simple

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. Utilizar una consulta en una expresión booleana

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 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. Utilizar 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 finaliza con 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. Utilizar instrucciones IF...ELSE anidadas

En el ejemplo siguiente, se muestra cómo 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  

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

E. Usar una consulta como parte de una expresión booleana

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 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 también

ALTER TRIGGER (Transact-SQL)
Lenguaje de control de flujo (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
IF...ELSE (Transact-SQL)