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子句来去除一些不需要的行