61581229 发表于 2018-9-14 12:37:02

oracle的Merge into语法应用

----------------------  
--目标表
  
create table zbak_test_person(
  
id varchar2(32),
  
name varchar2(256),
  
heigh varchar2(8),
  
job_name varchar2(256)
  
);
  
----------------------
  
--插入目标表,测试数据
  
insert into zbak_test_person (id,name,heigh,job_name) values ('001','test','175','IT');
  
----------------------
  
--创建一个临时表,用于中转数据
  
create table zbak_test_person_temp(
  
id varchar2(32),
  
name varchar2(256),
  
heigh varchar2(8),
  
job_name varchar2(256)
  
);
  
----------------------
  
--插入临时表,测试数据
  
insert into zbak_test_person_temp (id,name,heigh,job_name) values ('001','test1','175','IT');
  
insert into zbak_test_person_temp (id,name,heigh,job_name) values ('002','test2','175','IT');
  
insert into zbak_test_person_temp (id,name,heigh,job_name) values ('003','test3','175','IT');
  
insert into zbak_test_person_temp (id,name,heigh,job_name) values ('004','test4','175','IT');
  
insert into zbak_test_person_temp (id,name,heigh,job_name) values ('005','test5','175','IT');
  
insert into zbak_test_person_temp (id,name,heigh,job_name) values ('006','test6','175','IT');
  
insert into zbak_test_person_temp (id,name,heigh,job_name) values ('007','test7','175','IT');
  
COMMIT;
  
----------------------
  
--merge into 语句
  
merge into zbak_test_person p

  
using (select>  
on (p.id = t.id)
  
when matched then
  
update set p.name = t.name, p.heigh = t.heigh, p.job_name = t.job_name
  
when not matched then
  
insert values (t.id, t.name, t.heigh, t.job_name);
  
commit;
  
----------------------
  
--验证数据是否更新成功
  
select * from zbak_test_person;
  
select * from zbak_test_person_temp;


页: [1]
查看完整版本: oracle的Merge into语法应用