当前位置:数据库 > Oracle >>

Oracle之实现多表级联更新讲解

实现多表级联更新,这种方法比较安全的:
--首先定一个游标把需要用到的一些数据存放到游标中:
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;
补充:Web开发 , ASP.Net ,
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,