У меня есть следующее заявление декодирования в качестве преобразования выражения в Informatica:Informatica расшифровывает возвращает запрещенное значение
(DECODE
(TRUE
, OPERATION1='I' and NOT ISNULL(a_new),'YES'
, OPERATION1='D'and NOT ISNULL(a_old),'YES'
, OPERATION1='U'and ((
(a<>b)
or (ISNULL(a_new) and NOT ISNULL(a_old))
or (NOT ISNULL(a_new) and ISNULL(a_old))
)
),'YES','NO CHANGE')
)
Где a_new и a_old являются целыми числами (когда они появляются на всех).
Вот странная часть:
Это расшифровывает заявление, при запуске, постоянно возвращает значение 0 (ноль). Почему я не могу понять, почему. Когда я запускаю это в отладчике и оцениваю декодирование (щелкните правой кнопкой мыши на выражении, нажмите «Оценить выражение», вставьте декодирование в), он правильно оценивает ДА или НЕТ ИЗМЕНЕНИЙ. Но когда он действительно запускается, как в отладчике, так и в производстве, он по-прежнему оценивает ноль. Кто-нибудь знает, почему?
+1 для использования [мой любимый DECODE (TRUE, ...) трюк] (http://stackoverflow.com/a/9979906/95)! –