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;

时间: 2024-12-07 03:30:26

Oracle多表级联更新详解的相关文章

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   

Oracle中用游标实现多表级联更新详解

级联更新使用名目:  代码如下 复制代码 CREATE TABLE A001(ID INT PRIMARY KEY,NAME VARCHAR(20)) CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE ON UPDATE CASCADE,AGE TINYINT) 例1  代码如下 复制代码 declare   CURSOR D_CURSOR_CUS_INFO IS     select t3.id_           a

Oracle数据操作和控制语言详解_oracle

正在看的ORACLE教程是:Oracle数据操作和控制语言详解.SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL.其中用于定义数据的结构,比如 创建.修改或者删除数据库:DCL用于定义数据库用户的权限:在这篇文章中我将详细讲述这两种语言在Oracle中的使用方法.  DML语言 DML是SQL的一个子集,主要用于修改数据,下表列出了ORACLE支持的DML语句. 插入数据 INSERT语句常常用于向表中插入行,行中可以有特殊数据字段,或者可

Oracle 12c多租户特性详解:全局用户与本地用户的原理与维护

(题图来自Oracle VP , Sally Piao的摄影佳作,感谢摄影师授权) 编辑手记:这一节我们将介绍多租户架构中用户及权限的变化,全局用户和本地用户,管理方式和内部实现,这篇文章来自<深入解析Oracle>一书的摘录. 前情回顾:Oracle 12c多租户特性详解:从Schema到PDB的变化与隔离 COMMON 和 Local 用户 无论在 CDB 和 Non-CDB 数据库中,用户都拥有一个 Schema,拥有一系列的 Schema 对象,在 CDB 中由于 PDB 的引入,用户

WordPress数据库表及字段详解

今天熊哥在朋友的博客看到关于wordpress数据库的介绍,感觉很有用,相信对同样在使用wordpress的同学也很有用,所以就拿过来分享一下.希望对自己和大家有所帮助. [废话] 记得刚接触网站时对数据库一点概念也没有,那时公司网站要换服务器,于是就单纯的转移了网站文件,结果可想而知.一翻折腾,在糊里糊涂中按网上的教程终于搞定,享受成就感时也第一次接触了数据库.那时感觉数据库高端深奥遥远,从没想过自己以后会跟数据库再有交集:而后,自己成为一名数据库工程师时也没想起当年数据库曾给自己带来困扰.现

jQuery validate+artdialog+jquery form实现弹出表单思路详解_jquery

功能描述: 在页面弹出一个form表单,ajax无刷新提交表单,表单需通过验证. 适用范围: 适用于在列表页面新增,修改记录. 需要加载的js文件: jquery.min.js artDialog.js iframeTools.js jquery.form.js jquery.validate.js 实现思路: 在页面中将表单放到一个隐藏的容器中,用artdialog弹出该form并对form加上jqueryvalidate验证,提交采用jqueryform ajax提交,由于都是用现成的插件写

JS中artdialog弹出框控件之提交表单思路详解_javascript技巧

artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口. 前言: 自适应内容 artDialog的特殊UI框架能够适应内容变化,甚至连外部程序动态插入的内容它仍然能自适应,因此你不必去考虑消息内容尺寸使用它.它的消息容器甚至能够根据宽度让文本居中或居左对齐--这一切全是XHTML+CSS原生实现. 完善的接口 它的接口完善,可以轻易与外部程序配合使用.如异步写入消息.控制位置.尺寸.显示与隐藏.关闭等. 细致的体验 如果不是在输入状态,它支持Esc快捷键关

Oracle 静态监听注册详解

Oracle 静态监听注册详解        网上有很多关于oracle 监听静态注册的文章,但大多都是简单说说,并没有详细的例子,这里,将结合linux as4 下的oracle 10gR2.0.1 举一个具体的例子 1.在 $ORACLE_HOME/network/admin/listener.ora 文件中加入一个静态注册的节点 [oracle@prudent oracle]$ cd $ORACLE_HOME/network/admin [oracle@prudent admin]$ vi

Oracle数据操作和控制语言详解 (一)

oracle|控制|数据|详解 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL.其中用于定义数据的结构,比如 创建.修改或者删除数据库:DCL用于定义数据库用户的权限:在这篇文章中我将详细讲述这两种语言在Oracle中的使用方法. DML语言 DML是SQL的一个子集,主要用于修改数据,下表列出了ORACLE支持的DML语句. 语句 用途 INSERT 向表中添加行 UPDATE 更新存储在表中的数据 DELETE 删除行 SELECT