IF...ELSE (Transact-SQL)

Impone condiciones en la ejecución de una instrucción Transact-SQL. La instrucción Transact-SQL que sigue a una palabra clave IF y a su condición se ejecuta si la condición se cumple: la expresión booleana devuelve TRUE. La palabra clave opcional ELSE introduce otra instrucción Transact-SQL que se ejecuta cuando la condición IF no se cumple: la expresión booleana devuelve FALSE.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

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 booleana 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 definidas con un bloque de instrucciones. A menos que se utilice un bloque de instrucciones, la condición IF o ELSE puede afectar al rendimiento de una sola instrucción Transact-SQL.

    Para definir un bloque de instrucciones, utilice las palabras clave de control de flujo BEGIN y END.

Notas

Una construcción IF...ELSE puede utilizarse en lotes, en procedimientos almacenados y en consultas ad hoc. Cuando esta construcción se utiliza en un procedimiento almacenado, se suele utilizar para probar la existencia de algún parámetro.

Las pruebas IF pueden estar anidadas después de otra área IF o a continuación de un área ELSE. El límite del número de niveles anidados depende de la memoria disponible.

Ejemplos

En el siguiente ejemplo se utiliza IF…ELSE con la salida del procedimiento almacenado uspGetList. Este procedimiento almacenado se define en Crear procedimientos almacenados. En este ejemplo, el procedimiento almacenado devuelve una lista de bicicletas con un precio de venta inferior a 700 dólares. De este modo, se ejecuta la primera instrucción PRINT.

DECLARE @compareprice money, @cost money 
EXECUTE Production.uspGetList '%Bikes%', 700, 
    @compareprice OUT, 
    @cost OUTPUT
IF @cost <= @compareprice 
BEGIN
    PRINT 'These products can be purchased for less than 
    $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'
END
ELSE
    PRINT 'The prices for all products in this category exceed 
    $'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'

Vea también

Referencia

BEGIN...END (Transact-SQL)
ELSE (IF...ELSE) (Transact-SQL)
END (BEGIN...END) (Transact-SQL)
SELECT (Transact-SQL)
WHILE (Transact-SQL)
CASE (Transact-SQL)
Lenguaje de control de flujo (Transact-SQL)

Otros recursos

Usar CASE
Usar IF...ELSE

Ayuda e información

Obtener ayuda sobre SQL Server 2005