Bloques SQL de IF-THEN-ELSE en Oracle 8i

Pues no existen para select simples…

Si nos vemos en la necesidad de generar un query de select simple y deseamos tener una respuesta logica de IF-THEN-ELSE sin tener que programar un PL completo, en lugar de los bloques IF-THEN-ELSE en Oracle 8i utilizamos los DECODE dentro de un select simple.

decode(expresión a comparar, valor esperado, resultado a mostrar)

Decode es la función que nos sirve como bloque IF-THEN-ELSE en Oracle 8i.  Tambien funciona en las siguientes versiones de Oracle pero desde Oracle 9i se puede utilizar el IF-THEN-ELSE al igual que los bloques CASE, que todos conocemos y amamos.

Ejemplo del decode:

select decode(trunc(cant_vendida/cant_meta) * 100),0,'No se logro la meta','Producto vendido segun la meta') from ventas;

En este ejemplo sencillo podemos ver como se utilizo un bloque de pseudo IF-THEN-ELSE que funciona en versiones de Oracle un tanto antiguas como el 8i.  El desglose del mismo asemejando un bloque IF-THEN-ELSE de PL seria como se ve a continuacion:

IF (trunc(cant_vendida/cant_meta) * 100)==0) 
THEN 'No se logro la meta';
ELSE 'Producto vendido segun la meta';

Espero que les sirva.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s