Compartir por


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 Almacenamiento en 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.

IFLas 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;