Published on

January 22, 2023

Comprendiendo las declaraciones IF en SQL Server

Cuando trabajas con T-SQL en Microsoft SQL Server, es importante entender cómo usar la declaración IF para incluir declaraciones condicionales dentro de procedimientos almacenados, funciones, desencadenadores o scripts. La declaración IF en T-SQL funciona de manera similar a la declaración IF en la mayoría de los lenguajes de programación modernos, permitiéndote ejecutar una línea o bloque de código solo si se cumplen ciertas condiciones.

Conceptos básicos de la declaración IF en SQL

La declaración IF es fácil de usar y funciona como la cláusula WHERE de una declaración SQL, pero no está adjunta a una consulta. La palabra clave IF va seguida de un argumento o grupo de argumentos combinados con las palabras clave AND o OR. Un argumento es una comparación lógica que evalúa a verdadero o falso. Por ejemplo, “@NumberValue < 1”, “@TextValue =’Hola'” o “BooleanFunction()”.

La combinación de las palabras clave AND y OR a veces puede dar resultados sorprendentes, por lo que es importante entender cómo funcionan juntas. Cuando el/los argumento(s) se evalúan como VERDADERO, se ejecuta el código subsiguiente. Si el/los argumento(s) se evalúan como FALSO, entonces la línea o líneas de código subsiguientes se omiten.

Usando IF en SQL para controlar la ejecución de una sola declaración

Consideremos un ejemplo en el que queremos imprimir un mensaje basado en el valor de una variable:

DECLARE @MSSQLTips INT = 1;

IF @MSSQLTips = 0
    PRINT 'Es cero';

IF @MSSQLTips <> 0
    PRINT 'No es cero';

En este ejemplo, se declara una variable con un tipo numérico y se establece en el valor de 1. La primera declaración IF compara ese valor con la constante cero. Dado que se evalúa como falso, el texto “Es cero” no se imprimirá. La segunda declaración IF compara la misma variable con el mismo valor constante, pero esta vez utiliza el operador de no igual. Esto se evaluará como verdadero y se ejecutará el texto “No es cero”.

El formato, los saltos de línea y los espacios en blanco no importan en la programación T-SQL. Esto significa que el código funcionará de la misma manera si la acción potencial no está en la misma línea que la declaración IF. Es una práctica común de formato escribir las declaraciones IF de esta manera.

Usando IF en SQL con BEGIN y END para controlar la ejecución de un grupo de declaraciones

A veces, es posible que necesites proteger la ejecución de múltiples declaraciones utilizando la palabra clave IF. En tales casos, puedes encapsular un bloque de código con las palabras clave BEGIN y END para agruparlas juntas. Aquí tienes un ejemplo:

DECLARE @MSSQLTips INT = 0;
DECLARE @ReturnValue SMALLINT;

IF @MSSQLTips = 0
BEGIN
    SELECT 'No hay base de datos cero' AS [nombre];
    SET @ReturnValue = -1;
END;

IF @MSSQLTips <> 0 
BEGIN
    SELECT [nombre]
    FROM sys.databases
    WHERE database_id = @MSSQLTips;
    SET @ReturnValue = 0;
END;

En este ejemplo, las declaraciones BEGIN y END se utilizan para proteger la ejecución de múltiples declaraciones. El código etiquetado como “Bloque 1” se ejecutará si el argumento etiquetado como “Argumento 1” se evalúa como verdadero. Si se evalúa como falso, el código etiquetado como “Bloque 2” se ejecutará si el argumento etiquetado como “Argumento 2” se evalúa como verdadero. Si ambos argumentos se evalúan como falsos, se ejecutará el código etiquetado como “Bloque 3”.

Aunque las declaraciones BEGIN y END solo son necesarias para escenarios condicionales de múltiples declaraciones, se recomienda usarlas en la mayoría, si no en todas, las declaraciones IF. Esto ayuda a evitar resultados inesperados cuando se agregan declaraciones adicionales más adelante.

Condición ELSEIF y ELSE en SQL

Al igual que en otros lenguajes de programación, T-SQL te permite combinar la palabra clave IF con ELSEIF y ELSE para verificar múltiples escenarios mutuamente excluyentes. Aquí tienes un ejemplo:

IF @MSSQLTips = 1 --Argumento 1
BEGIN --Bloque 1

END
ELSE IF @MSSQLTips = 2  --Argumento 2
BEGIN --Bloque 2

END
ELSE  -- En todos los demás casos
BEGIN --Bloque 3

END --Final End

En este ejemplo, el código etiquetado como “Argumento 1” se ejecutará si se evalúa como verdadero. Si se evalúa como falso, el código etiquetado como “Argumento 2” se ejecutará si se evalúa como verdadero. Si ambos argumentos se evalúan como falsos, se ejecutará el código etiquetado como “Bloque 3”. La declaración ELSE es opcional y solo se ejecutará cuando todas las condiciones anteriores se hayan evaluado como falsas.

Al usar ELSEIF y ELSE, puedes manejar múltiples escenarios de manera más fácil y hacer que tu código sea más legible.

Uso de una función booleana en un argumento

La función booleana más comúnmente utilizada en una declaración IF es la función EXISTS. Cuando se combina con una consulta, esta función devuelve verdadero cuando la consulta devuelve al menos una fila y falso cuando la consulta no devuelve ninguna fila. Aquí tienes un ejemplo:

IF NOT EXISTS(SELECT * FROM Sales.Customers WHERE CustomerID = 5)
    PRINT 'El cliente 5 no es válido';

Las declaraciones IF combinadas con la función EXISTS se utilizan comúnmente para validar valores de parámetros.

Al comprender los conceptos básicos de las declaraciones IF en SQL Server, puedes controlar de manera efectiva la ejecución de código basado en condiciones específicas. Ya sea que necesites ejecutar una sola declaración o un grupo de declaraciones, la declaración IF proporciona una herramienta poderosa para la lógica condicional en T-SQL.

Última actualización del artículo: 2022-09-12

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.