1

インフォマティカの式変換に次のデコード ステートメントがあります。

(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 と正しく評価されます。しかし、デバッガーと本番環境の両方で実際に実行すると、まだゼロと評価されます。理由を知っている人はいますか?

4

1 に答える 1

0

表情がいい感じです。それを使用するフィールドの定義を確認する必要があります。integer(または他の数値データ型)として宣言されているか、デフォルト値が割り当てられています。

于 2013-09-26T06:49:21.793 に答える