您当前的位置: 首页 > 数据库教程 > Oracle教程 > Oracle多表级联更新详解

Oracle多表级联更新详解

作者:不详 来源:网络 发布时间: 2014-08-26 22:32 点击:
我们在平时的工作中可能遇到过,多表级联更新,我也在网上看到过不少的方法,但是使用这些方法一般都没成功过,所以今天我给大家介绍一种稍微麻烦的方法,有需要的朋友可以参考下 用游标实现,我觉得绝对这种方法比较安全的。 --首先定一个游标把需要用到的一些数据存

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;
分享到:
本文"Oracle多表级联更新详解"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4