Oracle使用MyBatis在Mapper.xml中单个标签ID编写多行SQL报错:ORA-00911: 无效字符 解决办法

问题描述

在使用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的话,需要在语句的前后添加关键字BEGINEND;,注意END后面一定要加
所以,我们修改后的标签内容如下

<update id="test">
	BEGIN
		UPDATE table1 SET number=ABS(number);
	    UPDATE table2 SET number=ABS(number);
	END;
</update>

重启项目后,再次测试,数据就修改成功了

你可能感兴趣的:(Oracle,oracle,sql,数据库)