You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MyBatis @Update注解执行失败,报ORACLE错误ORA-00933

ORA-00933错误排查:MyBatis Update语句问题

问题场景

在传统Spring Boot应用的Mapper中,编写了如下更新语句:

@Update("UPDATE MY_TABLE SET STATUS_CODE=#{status} WHERE ID_DOC=#{idDoc};")
void updateStatus(@Param("status") final String status,@Param("idDoc") final BigDecimal idDoc);

执行该方法时返回ORA-00933: SQL 命令未正确结束错误,但相同的SQL语句在SQLPLUS中可正常运行。

问题原因

问题出在SQL语句末尾的分号;上。

MyBatis处理注解形式的SQL时,会将语句直接传递给Oracle JDBC驱动执行,但Oracle的JDBC驱动会把分号当作SQL语句的一部分解析,导致语法错误。而SQLPLUS作为Oracle官方命令行工具,会自动识别并剔除语句末尾的分号,不会将其传递给数据库引擎,因此能正常执行。

解决方法

直接去掉SQL语句末尾的分号即可:

@Update("UPDATE MY_TABLE SET STATUS_CODE=#{status} WHERE ID_DOC=#{idDoc}")
void updateStatus(@Param("status") final String status,@Param("idDoc") final BigDecimal idDoc);

内容的提问来源于stack exchange,提问作者ciro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:12:01