在for循环中调用数据库插表语句,容易造成ORA-01000: 超出打开游标的最大数的问题,主要原始是用CONNECTION 创建了 PREPAREDSTATEMENT ,用完了 PREPAREDSTATEMENT 后,没有关闭PREPAREDSTATEMENT,导致游标一直处于打开状态,因此在大数据访问量的情况下很容易出现数据库游标使用到最大,无法分配游标错误。

解决方式:

通过批量插入的方式:

oracle批量插入语句:

INSERT ALL
INTO TABLEA(field_1,field_2) VALUES (value_1,value_2)
INTO TABLEA(field_1,field_2) VALUES (value_3,value_4)
INTO TABLEA(field_1,field_2) VALUES (value_5,value_6)
SELECT 1 FROM DUAL;

在mybatis中,需要将最后的一个;号去掉,并且mybatis批量插入oracle时需要显式指定为 useGeneratedKeys="false"

<insert id="addList" parameterType="java.util.List" useGeneratedKeys="false">INSERT ALL<foreach item="item" index="index" collection="list">INTO T_APPLAUD(ID,USER_ID,BUSINESS_TYPE,PRODUCT_ID,CREATE_TIME) VALUES(#{item.id, jdbcType=NUMERIC},#{item.userId, jdbcType=VARCHAR},#{item.businessType, jdbcType=VARCHAR},#{item.productId, jdbcType=VARCHAR},#{item.createdTime, jdbcType=NUMERIC} )</foreach>SELECT 1 FROM DUAL
</insert>
<insert id="insertMedadata" parameterType="String" useGeneratedKeys="false">${insertSql}
</insert>

另外一种方法是 insert into table(...) (select ... from dual) union all (select ... from dual)

<insert id="addList" parameterType="java.util.List" useGeneratedKeys="false">INSERT INTO T_APPLAUD(ID,USER_ID,BUSINESS_TYPE,PRODUCT_ID,CREATE_TIME)<foreach item="item" index="index" collection="list" separator="union all">(SELECT #{item.id},#{item.userId},#{item.businessType},#{item.productId},#{item.createdTime} FROM DUAL)</foreach>
</insert>
<insert id="insertBatch">INSERT INTO t_user(id, name, del_flag)VALUES<foreach collection ="list" item="user" separator =",">(#{user.id}, #{user.name}, #{user.delFlag})</foreach >
</insert>

ORACLE ORA-01000: 超出打开游标的最大数(解决及原因)相关推荐

  1. ORA-01000-超出打开游标的最大数(解决及原因)

    GPS平台.网站建设.软件开发.系统运维,找森大网络科技! https://cnsendnet.taobao.com 来自森大科技官方博客 http://www.cnsendblog.com/inde ...

  2. Java oracle 超出打开游标的最大数

    Java代码在执行conn.createStatement和conn.prepareStatement时候实际上都是相当和在数据库中打开了个cursor 不要放在这两个方法不要放在循环中 java.s ...

  3. Java 技术篇 - 连接oracle数据库执行sql使用close()关闭createStatement()无效无法清除游标缓存问题解决,报“ORA-01000: 超出打开游标的最大数“错误解决方法

    java.sql.SQLException: ORA-01000: 超出打开游标的最大数 问题在一个大数据量的嵌套循环下 close() 关闭 createStatement() 根本无效,即使把执行 ...

  4. ORA-01000: 超出打开游标的最大数

    当使用JDBC操作数据时出现起出打开游标最大数的原因:一般出现在执行大量插入语句 时,没有关闭Statement. 解决方法:每次插入一条数据时或找执行一次批量提交时,记得 stmt = conn.c ...

  5. oracle ora 00279,ORA-01245、ORA-01547错误的解决

    数据库rman restore database 之后,执行recover database的时候,报告ORA-01245错误,详细的错误信息如下: SQL> recover database ...

  6. Oracle ORA

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...

  7. Oracle学习笔记 --- Oracle ORA错误解决方案

    今天在Debug的时候报错了如下信息: 后来综合了网上的东西,总结如下: ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-000 ...

  8. oracle用户密码不被锁,Oracle用户密码过期和用户被锁解决方法【转】

    [原因/触发因素] 确定是由于Oracle11g中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180天"所导致. [影响和风险] 影响 密码过期后, ...

  9. oracle简版如何打开,如何打开和关闭Oracle游标

    如何打开和关闭Oracle游标 以Oracle显示游标为主,本文讲述了如何打开Oracle游标,以及相关的实际操作,下面和小编一起来看看吧! 打开Oracle游标 使用游标中的值之前应该首先dewen ...

  10. oracle 存储过程循环打开游标数据处理

    2017-07-24 14:12:42 SQL内容: 1.一次性检索 100000 条数据. 2. 1000 条提交一次. 3.超过 100000 万条,重新打开游标,重新检索. pl/sql内容如下 ...

最新文章

  1. 成就更卓越、更有意义的人生
  2. Android Touch系统简介(二):实例详解onInterceptTouchEvent与onT
  3. Git本地与远程配对命令:两种 一种是在推送push时候配对 一种是新建分支checkout -b时候配对
  4. linux怎样测试tty,linux – 提示自定义:如何检测何时没有tty
  5. 力控批量添加变量_力控变量.ppt
  6. 背地砖上楼的机器人_德国发明铺地砖机器人,效率大幅度上升,节省千万!
  7. iterator adapter inserter
  8. 2020-11-05 转载 国内配置Electron开发环境的正确方式
  9. NDK配置文件Android.mk简介
  10. html个人中心源代码,HTML用户注册页面设置源码
  11. NB-iot的M5310A的学习
  12. 算法导论第三版 第30章习题答案
  13. Linux epoll模型详解及源码分析
  14. 基于SSM的汽车租赁管理系统
  15. [多媒体] 10大开源视频剪辑软件
  16. 计算机论文鉴定表指导教师评语,毕业论文指导老师评语|毕业论文鉴定表评语...
  17. win8页面 html,Win8 Metro风格界面设计HTML+CSS网页模板
  18. 怎么把蓝狐上的代码转为html,Ajax动态调用用户控件输出html
  19. 易福门电感式接近开关IGS200
  20. 计算机软件专业可以考哪些证书

热门文章

  1. vivo nex免Root使用空调狗
  2. python客户端软件开发_用 Python 实现一个简易版 HTTP 客户端
  3. vs code 小霸王插件本地nes游戏加载
  4. 项目管理:如何做好进度管理?
  5. vscode主题 webstorm_vscode/webstorm快捷键
  6. 基于Java的实现宠物管理系统的设计与实现
  7. 基于Qt的海康威视SDK二次开发-摄像头登陆、预览和抓图
  8. 必刷2022年辽宁最新消防设施操作员模拟题库及答案
  9. 中美线径对照表_AWG 与国际线径对照表
  10. IDEA必备的10款插件