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

开发者在线 Builder.com.cn 更新时间:2007-04-11作者:builder.com.cn 来源:

本文关键词: 数据仓库 数据仓库 数据仓库 Oracle oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle 10g MERGE Bob Watkins

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

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

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

列表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

推荐阅读与 数据仓库 数据仓库 数据仓库 Oracle oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle 10g MERGE Bob Watkins 相关开发者在线内容

数据仓库 数据仓库 数据仓库 Oracle oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle 10g MERGE Bob Watkins相关技术文章

用户评论

  • 用户名
  • 评论内容