欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle多表級(jí)聯(lián)更新詳解

 更新時(shí)間:2013年07月04日 09:47:01   作者:  
我們?cè)谄綍r(shí)的工作中可能遇到過(guò),多表級(jí)聯(lián)更新,我也在網(wǎng)上看到過(guò)不少的方法,但是使用這些方法一般都沒(méi)成功過(guò),所以今天我給大家介紹一種稍微麻煩的方法,有需要的朋友可以參考下

用游標(biāo)實(shí)現(xiàn),我覺(jué)得絕對(duì)這種方法比較安全的。
--首先定一個(gè)游標(biāo)把需要用到的一些數(shù)據(jù)存放到游標(biāo)中:

復(fù)制代碼 代碼如下:

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;

--然后循環(huán)游標(biāo)對(duì)數(shù)據(jù)進(jìn)行更新:
復(fù)制代碼 代碼如下:

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;

相關(guān)文章

最新評(píng)論