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?
- SQL Server no usa la sentencia THEN
- SQL Server no usa END IF;
- 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;