1

如何避免多次计算

我在存储过程中有这个(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

4

1 回答 1

0

您可以使用两个更新语句来做到这一点。. .

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;

这将对集合的第二部分使用旧值。

于 2012-07-18T14:19:35.360 回答