複数の計算を回避する方法
これはストアドプロシージャ(IBM DB2)にあります
UPDATE my_table
SET field1 = my_func(fieldx, 1, 2),
field2 = my_func(fieldx, 1, 2) * fieldy
WHERE my_key =
AND another_field < 0;
その関数への重複呼び出しを避けるにはどうすればよいmy_func
ですか?
複数の計算を回避する方法
これはストアドプロシージャ(IBM DB2)にあります
UPDATE my_table
SET field1 = my_func(fieldx, 1, 2),
field2 = my_func(fieldx, 1, 2) * fieldy
WHERE my_key =
AND another_field < 0;
その関数への重複呼び出しを避けるにはどうすればよいmy_func
ですか?
2 つの update ステートメントで実行できます。. .
UPDATE my_table
SET field1 = my_func(fieldx, 1, 2)
WHERE my_key = AND another_field < 0;
UPDATE my_table
SET field2 = field1 * fieldy
WHERE my_key = AND another_field < 0;
ところで、以下は DB2 では期待どおりに機能しません。
UPDATE my_table
SET field1 = my_func(fieldx, 1, 2),
field2 = field1 * fieldy
WHERE my_key = AND another_field < 0;
これにより、セットの 2 番目の部分に古い値が使用されます。