现在有表UPDATETEST,字段TESTCOLUMN1和TESTCOLUMN2。
我要把两个字段同时UPDATE成某个FUN()的返回值,请教如何进行。
可能是比较菜的问题,望大虾们不吝赐教。
我要把两个字段同时UPDATE成某个FUN()的返回值,请教如何进行。
可能是比较菜的问题,望大虾们不吝赐教。
解决方案 »
- 小问题求解
- 怎么向表中插入10000条数据
- oracle forms6i----使用call_form过程致使父窗体还原问题求助
- [求助]想成为一名Oracle的DBA,大概需要几年的学习?
- 请问ORA-04052错误是怎么回事?
- 查询嵌套表问题,如何展开嵌套表内容?
- 怎样把图片存入oracle表中,怎样把电影存到oracle表中
- 哪位大哥用过cognos连接oracle发布不同的报表,请指教,怎么连接?急!!
- Oracle中存储过程的使用问题求教_游标方法的使用?
- PLSQL设置了却不保存问题
- PLS-00103:Encountered the symbol "LOOP" when expecting one of the following
- 关于带多步数据更新的存储过程优化
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 ...
UPDATE TEST
SET (TESTCOLUMN1,TESTCOLUMN2)=(FUN(...),FUN(....))
我的意思是在某种条件下,两个字段UPDATE的结果值一样,即FUN()里面的参数都一样。
是不是有别的办法,不用去做两次一模一样的FUN(),(方法相同,参数相同),而采取别的办法。
或者是ORACLE下本来就有类似缓存机制,在SET COLUMN1=FUN()完后,去UPDATE COLUMN2时,发现FUN()完全一样,而且参数也相同,就直接调用缓存就是上一步的结果去做呢?
建一个触发器,在触发器里写上
:new.TESTCOLUMN2 := :new.TESTCOLUMN1;
还有一个快馊了的主意一条:
把一条update语句按记录拆开,在游标的循环中先取来func的值,再在update中两次引用这个值给这两字段更新。