现在有表UPDATETEST,字段TESTCOLUMN1和TESTCOLUMN2。
我要把两个字段同时UPDATE成某个FUN()的返回值,请教如何进行。
可能是比较菜的问题,望大虾们不吝赐教。

解决方案 »

  1.   

    把全部数据更新掉
    update UPDATETEST set TESTCOLUMN1=fun(参数1,参数2...),TESTCOLUMN2=fun(参数1,参数2...);
    部分数据要加条件
    update UPDATETEST set TESTCOLUMN1=fun(参数1,参数2...),TESTCOLUMN2=fun(参数1,参数2...) where 条件1 and ...
      

  2.   


    UPDATE TEST
    SET (TESTCOLUMN1,TESTCOLUMN2)=(FUN(...),FUN(....)) 
     
      

  3.   

    额,估计我没表达明白我的意思。
    我的意思是在某种条件下,两个字段UPDATE的结果值一样,即FUN()里面的参数都一样。
    是不是有别的办法,不用去做两次一模一样的FUN(),(方法相同,参数相同),而采取别的办法。
    或者是ORACLE下本来就有类似缓存机制,在SET COLUMN1=FUN()完后,去UPDATE COLUMN2时,发现FUN()完全一样,而且参数也相同,就直接调用缓存就是上一步的结果去做呢?
      

  4.   

    在这里给出一个馊主意一条,仅供参考:
    建一个触发器,在触发器里写上
    :new.TESTCOLUMN2 := :new.TESTCOLUMN1;
    还有一个快馊了的主意一条:
    把一条update语句按记录拆开,在游标的循环中先取来func的值,再在update中两次引用这个值给这两字段更新。