使用Oracle10gMERGE语句更新数据行

llj20131406

llj20131406

2016-01-29 14:41

使用Oracle10gMERGE语句更新数据行,使用Oracle 10gMERGE语句更新数据行

  在Oracle 9i R2版中引入的MERGE语句通常被称作“更新插入”(upsert),因为使用MERGE可以在同一个步骤中更新(update)并插入(insert)数据行,对于抽取、转换和载入类型的应用软件可以节省大量宝贵的时间,比如向数据仓库中加载数据,数据仓库中没有的数据行可以插入到数据仓库中,而已经存在的数据行也同时被更新。

  在MERGE语句引入的时候,需要同时使用一条UPDATE和一条INSERT语句,顺序也是固定的(先使用UPDATE语句,然后是INSERT语句)。如果您只需要使用其中的某一条一句,您只需要使用现有的INSERT或者UPDATE语句,而不必使用MERGE语句,而删除数据可以使用DELETE语句。

  在Oracle 10g R1版中,MERGE语句发生了变化,UPDATE或INSERT语句不再是必须的,而是可选项,您可以两者都用也可以都不用,而且,UPDATE语句也具备了DELETE的功能,您可以在同一个步骤中对现有的有效记录进行升级并清理废弃的记录。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com)

  列表A创建了一个表格列出现有项目:项目号码、标题、开始日期、进度完成比例以及员工对项目的响应,还创建了一个事务表格使用MERGE语句进行升级批处理。

  DROP TABLE open_projects;
  DROP TABLE project_updates;
  CREATE TABLE open_projects
  (pno NUMBER(6) PRIMARY KEY,
  title VARCHAR2(40),
  startdate DATE,
  pctdone NUMBER(3),
  empno NUMBER(6)
  );
  INSERT INTO open_projects VALUES
  (10, 'Inventory servers', '08-JAN-07',0, 206);
  INSERT INTO open_projects VALUES
  (20, 'Upgrade Oracle on SRV01','15-JAN-07', 0, 206);
  INSERT INTO open_projects VALUES
  (30, 'Conduct skills assessment','22-JAN-07', 0, 210);
  CREATE TABLE project_updates
  (action CHAR(1),
  pno NUMBER(6),
  pctdone NUMBER(3),
  empno NUMBER(6)
  );
  INSERT INTO project_updates VALUES
  ('C', 10, 50, 214);
  INSERT INTO project_updates VALUES
  ('D', 20, NULL, NULL);
  COMMIT;

  列表A

 一个典型的MERGE语句从识别表格开始执行升级,而且对现有的记录进行筛选测试:

  MERGE INTO open_projects op
  USING project_updatespu
  ON (op.pno = pu.pno)
  ...

  表格open_projects会接受更新的数据,而project_updates表格则不会改变,如果项目号码(pno)在两个表格中都一样,那么数据行则被认为是相同的。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com)

  MERGE语句剩下的部分是更新语句,以及DELETE WHERE语法。

  ...
  WHEN MATCHED THEN
  UPDATE SET pctdone = pu.pctdone,
  empno = pu.empno
  DELETE
  WHERE pu.action = 'D';

  列表B展示了MERGE语句运行前后的表格情况。

  SQL @mergedel_b
  PNO TITLE STA

展开更多 50%)
分享

猜你喜欢

使用Oracle10gMERGE语句更新数据行

电脑网络
使用Oracle10gMERGE语句更新数据行

使用Oracle 10gMERGE语句更新数据行

编程语言 网络编程
使用Oracle 10gMERGE语句更新数据行

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Oracle 数据 使用游标

编程语言 网络编程
Oracle 数据 使用游标

Oracle数据库中跟踪sql语句介绍

编程语言 网络编程
Oracle数据库中跟踪sql语句介绍

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

透视MySQL数据库之更新语句

MySQL mysql数据库
透视MySQL数据库之更新语句

ORACLE SQL 语句分类

编程语言 网络编程
ORACLE SQL 语句分类

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

桌面中心(一)创建数据库

桌面中心(一)创建数据库

在Oracle10g中如何获得索引建议

在Oracle10g中如何获得索引建议
下拉加载更多内容 ↓