问题描述
在使用Oracle时,某段业务逻辑需要在一个标签中执行两条修改的sql命令
内容如下
<update id="test">
UPDATE table1 SET number=ABS(number);
UPDATE table2 SET number=ABS(number);
</update>
已经用了;来表示SQL的结束,但是请求接口时却报错无效字符,而且无效字符说的就是;

解决办法
大部分文章说的通用解决办法是在JDBC的字符串连接中添加参数allowMultiQueries=true
但我们用的Oracle,这个是MySQL连接中的参数
Oracle的话,需要在语句的前后添加关键字BEGIN和END;,注意END后面一定要加;
所以,我们修改后的标签内容如下
<update id="test">
BEGIN
UPDATE table1 SET number=ABS(number);
UPDATE table2 SET number=ABS(number);
END;
</update>
重启项目后,再次测试,数据就修改成功了
版权声明:本文为WindNolose原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。