Oracle Merge into

oracle有一个方法,可以同时插入或更新数据,代码格式如下:

MERGE INTO [your table-name] [rename your table here] 
USING ( [write your query here] )[rename your query-sql and using just like a table] 
ON ([conditional expression here] AND [...]...) 
WHEN MATHED THEN [here you can execute some update sql or something else ] 
WHEN NOT MATHED THEN [execute something else here ! ]

举例:

MERGE INTO target_table t 
USING (source_select ) s
ON (condition) 
WHEN MATHED THEN [update  ] 
WHEN NOT MATHED THEN [insert ]

根据condition条件将符合的执行update更新s数据到t表中,不符合的做插入操作。s可以是输入的数据例如select #{a} a from dual。如此可以将判断条件放在sql代码中,避免过多的创建断开连接。

 

在Oracle 10g中MERGE有如下一些改进: 
1、UPDATE或INSERT子句是可选的 
2、UPDATE和INSERT子句可以加WHERE子句 
3、在ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表 
4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行 

posted @ 2022-06-22 15:14  苏道羲  阅读(52)  评论(0编辑  收藏  举报