Función IF ELSE en SQL Server

 Uso de funcion IF ELSE  en SQL 


En el mundo de la programación y al trabajar con diferentes lenguajes de programación, los desarrolladores no familiarizamos muchos con el uso  de IF ELSE para validar que se cumplan ciertas condiciones. En SQL Server no es una excepción ya que también podemos utilizar la función IF ELSE para cumplir con algunas condiciones en consultas hacía tablas existentes en nuestra base de datos, en este artículo estaremos hablando sobre el uso de las función IF ELSE.




¿Que es IF ELSE?

La Función IF ELSE SQL es una instrucción condicional de control de flujo que nos permite determinar si podemos ejecutar u omitir un bloque de instrucciones en función de la condición especificada.

Sintaxis Usando IF
IF Expresion_Boleana
BEGIN
  Bloque Sentencia T-SQL
END

Sintaxis usando IF ELSE

IF Expresion_Boleana
 BEGIN
  Bloque Sentencia T-SQL
 END
ELSE
 BEGIN
  Bloque Sentencia T-SQL
 END

A continuación vamos a explicar la estructura de la función IF ELSE mediante el siguiente diagrama.




Primero debemos entender que la expresión evaluada en el IF es una Expresión Booleana es decir que se evalúa como Verdad o Falsa.

En el cuadro anterior podemos ver que si la expresión Booleana resulta ser verdadera se ejecuta las instrucciones T-SQL contenida dentro del IF. Todo lo contrario ocurre si la expresión booleana se evalúa como Falsa, entonces no se ejecuta las instrucciones dentro del IF sino las contenida dentro del ELSE.

La sentencia IF ELSE hace uso de las palabras claves BEGIN-END y nos permite ejecutar sentencias T-SQL. En consultas más robustas podemos hacer uso de BEGIN-END para evaluar una serie de instrucciones  SQL.

Dentro de Begin-End podemos ejecutar bloques de instrucciones como por ejemplo Insertar registros a una tabla, actualizar registros en dichas tabla, seleccionar registros de una tabla y eliminar registros de la tabla, todo esto siempre y cuando la condición establecida se cumpla ya sea en el IF o en el ELSE.

Como nota importante debemos saber que al crear una sentencia SELECT dentro de un BEGIN-END esta la debemos encerrar entre paréntesis de lo contrario nos arrojará error le ejecución.


Ejemplo de uso de IF ELSE en SQL Server

Ahora vamos a crear una serie de ejemplo utilizando primeramente la sentencia IF, para eso vamos hacer uso de una base de datos de prueba de un pequeño sistema de facturación.

Para el primer ejemplo vamos a mostrar las ventas del mes cuyo monto promedio sea superior a 1000 e imprimir un mensaje si hay ventas que cumplan con la condición. La consulta por realizar será la siguiente.

BEGIN
DECLARE @Productos AS INT

SELECT @Productos = AVG(sp.Precio*sp.CantidadOrdenada) FROM SfaPedidoDetalle as sp
INNER JOIN SfaPedido AS fp ON sp.objPedidoID = fp.ID
WHERE MONTH(fp.Fecha) = 03 --Indica el mes que es marzo

SELECT @Productos;

IF @Productos > 1000
 BEGIN
  PRINT 'El monto en venta de productos es mayor a 10000'
END
END 

A vamos a crear la consulta en SQL Server Management Studio.


En el ejemplo que hemos creado primeramente declaramos una variable que la cual almacenará la información del promedio de ventas de cada producto y aplicamos un filtro para que nos muestre la información de un mes específico para el ejemplo hemos puesto el mes de marzo que equivale a cero. Por último hacemos uso de IF para evaluar la condición para el caso evaluamos que la cantidad promediada sea mayor a 1000 y que nos imprima un resultado del promedio de ventas del mes de marzo(03).


Al ejecutar la consulta podemos obtener el resultado del promedio de ventas del mes de marzo.

Ahora vamos a realizar un ejemplo utilizando IF ELSE para el siguiente ejemplo vamos a crear un método que nos valide la edad de una persona, si la persona es menor de 18 años que nos envié un mensaje indicando que es una persona menor de edad en caso contrario indicar en un mensajes que se trata de una persona mayor de edad. veamos la consulta a crear.

BEGIN
 DECLARE @EDAD INT
  SET @EDAD = 45

  IF @EDAD < 18
   PRINT 'PERSONA MENOR DE EDAD' 
   ELSE
   PRINT'PERSONA MAYOR DE EDAD'
END 

A continuación, la siguiente consulta ejecutemos en SQL Server Management Studio:

 

Ahora ejecutemos la consulta para ver el resultado.


La condición de la consulta indicaba si la edad de la persona era menor a 18 nos enviaría un mensaje "Persona menor de edad", al validar la condición esta resulta ser falsa por lo que no se ejecutará la instrucción dentro del IF y procederá a ejecutarse el mensaje dentro del ELSE el cual indica que la "Persona es mayor de edad".


IF ELSE Anidados en SQL Server

La sentencia IF ELSE  también la podemos anidar en serie de instrucciones veamos un ejemplo, para eso vamos a crear un procedimiento almacenado utilizando una tabla denominada "AutosVentas" que nos valide la forma de venta de un auto en este caso la condición va a validar si la venta fue de crédito o contado. veamos la consulta.

CREATE PROCEDURE spGenerarVenta
@AutoID as int,
@Precio as decimal(6,2),
@Cantidad as int,
@FormaVenta as varchar(100)
AS 
BEGIN
  IF @FormaVenta = 'Credito'
  BEGIN
  PRINT'Insertando venta de credito..'
  INSERT INTO AutosVentas(AutoID,Precio,Cantidad,FormaVenta)
  VALUES(@AutoID,@Precio,@Cantidad,@FormaVenta)
  END
  ELSE
  BEGIN
   IF @FormaVenta = 'Contado' 
    PRINT'Insertando venta de contado..'
    INSERT INTO AutosVentas(AutoID,Precio,Cantidad,FormaVenta)
    VALUES(@AutoID,@Precio,@Cantidad,@FormaVenta)
   END
END
GO 

A continuación vamos a realizar la ejecución de la consulta en Management studio de SQL:



Ahora ejecutemos el procedimiento almacenado para mostrar el resultado de la consulta.


Ejecutamos el procedimiento almacenado y le pasamos los parámetros como son el ID del Auto, el precio la cantidad y la forma del pago, esta última es la que la condición evaluará ya que si es de crédito se registrará con esa especificación sino por el contrario se registrará como una venta de contado. Para nuestro caso hemos insertado información que la venta ha sido de crédito.

Como conclusión podemos decir que la sentencia IF ELSE es muy importante utilizarla cuando necesitamos evaluar ciertas condiciones dentro de nuestras consultas además que nos permite ejecutar series de sentencias siempre y cuando la condición evaluadas sea verdadera o falsa.



Publicar un comentario

0 Comentarios