Cómo hacer un DECODE en los mappings de OWB

Para los que estamos acostumbrados a utilizar el operador decode del SQL de Oracle sorprende bastante que no esté incluída en la sintaxis que se puede utilizar dentro del generador de expresiones de Oracle Warehouse Builder.

Pero todo tiene solución. Si para un campo se quiere seleccionar un valor en función del contenido de otro o más campos, se puede utilizar el objeto EXPRESSION, conectar en la entrada todos los campos implicados, y en la expresión del campo de salida olvidarnos del DECODE y utilizar en su lugar un CASE WHEN ..., que sí está soportado.

Por ejemplo:
CASE WHEN entrada1 = 0 THEN 'Falso'
        WHEN entrada2 = 1 THEN 'Cierto'
        ELSE 'Indefinido'
END

Hola, me encuentro utilizando OWB, y para resolver el problema de divisiones por cero utilizo Decode en una expresion, tal como sigue

DECODE(INGRP1.ORG2,0,NULL,INGRP1.ORG1/INGRP1.ORG2)

Saludos

En respuesta a por Alfonso (no verificado)

Pues en teoría no te debería funcionar. Yo lo probé con la versión 10.2 de Warehouse Builder y la expresión daba error hasta que lo cambié por el CASE, y se que en versiones anteriores pasaba lo mismo. Puede ser que tu estés utilizando una versión superior? A lo mejor en la 11 por fin se puede utilizar el Decode..

En respuesta a por Carlos

Hola, realmente al realizar la verificación de la expresión Decode envia error, pero si omites esta parte y ejecutas tu maping funcionará correctamente.

(yo solo soy un usuario, descubrí esto a "prueba y error" jajajaja)

Saludos

En respuesta a por Alfonso (no verificado)

Bueno, pues gracias a tu aportación ya tenemos 2 maneras de solventar el problema, utilizar un CASE WHEN, o utilizar el DECODE y pasar del error que nos da el validador, pero asegurándonos de que la expresión esté bien escrita!

En respuesta a por Carlos

Hola.. yo trabajo de OWB hace tiempo y tiene ciertas cosas o mañas. El decode SI funciona cuando utilizas una expresion aunque si clickeas en la opcion VALIDAR te da un error o warning..

En resumen tiene que usarlo sin validarlo o bien no darle importancia.. pasa lo mismo con trunc y no me acuerdo cual otra sentencia