sql查询里面的变量,避免多次计算

时间:2012-07-18 11:44:58

标签: sql stored-procedures db2

如何避免多次计算

我在存储过程(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

1 个答案:

答案 0 :(得分: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;

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