最近在做将mysql数据库项目迁移到oracle数据库项目中,发现某些sql存在不兼容的情况,比如批量插入在mysql中写法如下,mybatis配置文件
xxxMapper.xml文件:
但是运行起来后就一直报错,报错信息如下:
把SQL复制出来在PL/SQL中运行也是报同样的错,如上也可以看出,使用批量插入执行的SQL语句等价于:
而在oracle中用insert into xxx values (xxx,xxx),(xxx,xxx) 这种语法是通不过的 。
发现这只适用于MySQL,不适用于Oracle,因此把xml文件修改一下:
运行通过。在Oracle的版本中,有几点需要注意的:
1.SQL中没有VALUES;
2.<foreach>标签中的(selece ..... from dual);
3.<foreach>标签中的separator的属性为"UNION ALL",将查询合并结果集。