Las sentencias IF...ELSE

Publicado el 10 junio 2014 por Jamesrevelo @herprogramacion
Las sentencias IF...ELSE de SQL al igual que en otros lenguajes de programación permiten controlar el flujo de nuestros bloques de instrucciones dependiendo de la validez de una serie de condiciones.

Cuando uso estas sentencias?Cuando desees ejecutar solo algunas instrucciones si se cumple una condición. Por ejemplo cuando deseas evaluar si un precio de un producto es mayor a un valor y así decidir aplicar un descuento. O cuando al seleccionar los registros de una tabla que deban ser dados de baja. Todo depende de tus necesidades.
Como uso IF...ELSE?Es sencillo!. En primer lugar compruebas si es verdadera tu primera condición con IF. En caso de que lo sea se ejecutaran las instrucciones que has puesto. Si no fue verdadera, entonces usas ELSE IF para representar otra condición que tal vez si satisfaga el condicional.
Puedes poner tantos ELSE IF como condiciones desees establecer. Si al final ningún ELSE IF se cumple entonces terminará en la sentencia ELSE, la cual ejecuta algunas instrucciones en caso de que ninguna condición se haya cumplido.
SQL Server y MySQL usan sintaxis muy distintas pero cumplen el mismo cometido

SQL Server                               MySQL

IF <condición1>  instruccionesELSE IF <condición2>  instrucciones...ELSE IF <condiciónN>  instruccionesELSE      instrucciones

IF <condición1> THEN
  instruccionesELSEIF <condición2> THEN  instrucciones...ELSEIF <condiciónN> THEN  instruccionesELSE  instruccionesEND IF;


Que diferencias hay?
  1. SQL Server no usa la sentencia THEN
  2. SQL Server no usa END IF;
  3. SQL Server usa el ELSE IF con un espacio intermedio

Podrías mostrar un ejemplo en ambos motores?
Obvio!, a continuación veremos un bloque de sentencias que actualiza los clientes con respecto al acumulado de compras. 
Los clientes que superen $3200 dolares se les asignara en su atributo PRIORIDAD un rango ALTO representado con el carácter 'A'. Los clientes que hayan comprado entre $1600 y $3200 dolares se les asigna prioridad MEDIO 'M'. Y los clientes con compras acumuladas menores a $1600 se les asigna prioridad BAJA 'B'.

SQL Server MySQL

IF @ACUMULADO > 3200   UPDATE CLIENTE   SET PRIORIDAD = 'A';ELSE IF @ACUMULADO BETWEEN 1600    
AND 3200   UPDATE CLIENTE   SET PRIORIDAD = 'M';ELSE   UPDATE CLIENTE   SET PRIORIDAD = 'B'; IF ACUMULADO > 3200 THEN   UPDATE CLIENTE   SET PRIORIDAD = 'A';ELSEIF ACUMULADO BETWEEN 1600 AND 3200 THEN   UPDATE CLIENTE   SET PRIORIDAD = 'M';ELSE   UPDATE CLIENTE   SET PRIORIDAD = 'B';END IF;

James Revelo Urrea - Desarrollador independiente