インフォマティカの式変換に次のデコード ステートメントがあります。
(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 (ゼロ) の値が返されます。私は一生、理由を理解することはできません。これをデバッガーで実行してデコードを評価すると (式を右クリックし、[式の評価] をクリックして、デコードを貼り付けます)、YES または NO CHANGE と正しく評価されます。しかし、デバッガーと本番環境の両方で実際に実行すると、まだゼロと評価されます。理由を知っている人はいますか?