Oracle中mybatis批量更新报错ORA-00933:SQL命令未正确结束

项目场景:

最近在开发项目的过程中遇见了这个问题:Oracle中批量更新的时候报错 ORA-00933:SQL命令未正确结束


问题描述

mybatis批量更新报错ORA-00933:SQL命令未正确结束

c 复制代码
<foreach item="item" index="index" collection="list" separator=";">
	update A
	set ID=#{item.id}
	where NAME=#{item.name}
</foreach>

上边这个执行的时候报错ORA-00933:SQL命令未正确结束


原因分析:

oracle中数据库批量更新和mysql中的有些不一样,需要进行如下修改。


解决方案:

对上边的代码进行改变

  1. separator=";" 这个里边一定要加分号,而不是逗号
  2. begin和end必须要成对出现 open="begin" end=";end;" 也就是为了补全语法
c 复制代码
<foreach item="item" index="index" collection="list"  open="begin" end=";end;"  separator=";">
	update A
	set ID=#{item.id}
	where NAME=#{item.name}
</foreach>
相关推荐
晴天¥6 小时前
Oracle中的监听配置与管理(动态、静态监听配置对比以及listener.ora和tnsnames.ora)
数据库·oracle
持敬chijing7 小时前
Web渗透之SQL注入-文件读写-木马植入
sql·安全·web安全·网络安全·安全威胁分析
jnrjian7 小时前
ddl_lock_timeout 设置 read only table 通过view 实现细粒度依赖
sql·oracle
持敬chijing9 小时前
Web渗透之SQL注入-联合查询注入-注入点数据类型判断
前端·sql·安全·web安全·网络安全·安全威胁分析
jnrjian11 小时前
exp imp 配置不了 sys / as sysdba @PDB 如何进入特别pdb
oracle
minji...11 小时前
MySQL数据库 (一) MySQL数据库基础,MySQL架构,存储引擎,SQL语句分类
数据库·mysql·oracle·sql语句·存储引擎··mysqld
阿里云大数据AI技术12 小时前
EMR Serverless Spark 数据湖上新能力:一条 SQL 实现标量向量混合检索
人工智能·sql·spark
XiYang-DING13 小时前
【MyBatis】${}与 #{}的区别
java·tomcat·mybatis
cui_ruicheng13 小时前
MySQL(一):数据库基础与MySQL入门
数据库·sql·mysql
AOwhisky14 小时前
MySQL 学习笔记(第三期):SQL 语言之数据操作与单表查询
linux·运维·笔记·sql·学习·mysql·云计算