在做数据新增的时候,需要先判断有没有该数据,有就update没有就insert,你会发现每次做操作的时候都要写一个查询的语句,为了降低连接数据库的次数,可以利用oracle自带的 merge into 函数来执行updateOrinsert操作。
MERGE 命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据。
merge 语法
MERGE INTO [操作的表名] [别名1]
USING (查询语句,也就是构造一个结果集) [别名2]
ON (别名1.col = 别名2.col and ....)
WHEN MATCHED THEN
[here you can execute some update sql or something else ]
WHEN NOT MATCHED THEN
[execute something else here ! ]
举例:
MERGE INTO TEST T1
USING (SELECT '2' as ID, 'newtest2' as NAME FROM dual) T2
on (T1.ID=T2.ID)
WHEN MATCHED THEN UPDATE SET T1.NAME=T2.NAME
WHEN NOT MATCHED THEN INSERT (T1.ID, T1.NAME) VALUES (T2.ID, T2.NAME );
TEST1:也就是你要插入或者更新的表
USING(根据你需要的数据值来构造一个临时表)
on (T1.ID=T2.ID):两个表连接的条件 T1中的Id = T2中的id,T2中是具体的值,也就是你要查询的值
WHEN MATCHED THEN:有结果集的操作 update
WHEN NOT MATCHED THEN :无结果集的操作 insert