Oracle多表级联更新分析
发布时间:2021-12-07 19:59:33 所属栏目:教程 来源:互联网
导读:用游标实现,我觉得绝对这种方法比较安全的。 --首先定一个游标把需要用到的一些数据存放到游标中: 复制代码 代码如下: declare CURSOR D_CURSOR_CUS_INFO IS select t3.id_ as id_, t3.owe_money_ as owe_money_, a.heatingArea as heating_area_ from T_CUS
用游标实现,我觉得绝对这种方法比较安全的。 --首先定一个游标把需要用到的一些数据存放到游标中: 复制代码 代码如下: declare CURSOR D_CURSOR_CUS_INFO IS select t3.id_ as id_, t3.owe_money_ as owe_money_, a.heatingArea as heating_area_ from T_CUS_OWE_MONEY_2 t2 left join T_CUS_OWE_MONEY_3 t3 on t2.id_= t3.id_ left join (select s.bh, sum( case when s.stkbz='0' then nvl(s.mj,0) when s.stkbz='1' then 0-nvl(s.mj,0) end ) as heatingArea from sk s where s.nd = '2008-2009' group by s.bh) a on t2.bh_=a.bh where t3.owe_money_- t2.owe_money_ = a.heatingArea*5 and t3.OWE_MONEY_ > 0; --然后循环游标对数据进行更新: 复制代码 代码如下: begin FOR everyRow IN D_CURSOR_CUS_INFO loop update T_CUS_YEAR_STATUS t set t.HEATING_AREA_ = everyRow.HEATING_AREA_, t.OWE_MONEY_ = everyRow.owe_money_ where t.YEAR_ = '2008-2009' and t.id_ = everyRow.id_; end loop; commit; end; ![]() (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |