pl/sql 编写的merge into 程序
--merge into数据迁移和更新
merge into mytest2 m2
using mytest3 m3
on (m3.name=m2.name)--匹配条件
when matched then
update set m2.password=nvl(m3.password,decode(m2.password,'www','default'))
when not matched then
insert values(m3.name,m3.password);
然后执行该程序。
解释:
1、前提条件是:using 的 mytest3 中,用来匹配的条件(on后面)不能有重复,即mytest3中的name字段不能有重复,否则报错:ORA-30926: unable to get a stable set of rows in the source tables
2、变化的mytest2,mytest3不会改变,它只是模板。
数据跟新前后对比
匹配前:
mytest2表
mytest3表
匹配后:
mytest2表
mytest3表