根本原因在于你打开的cursors(游标),超出了数据库规定的最大值
1、通过命令查看数据库限定的最大值:在oracle终端下:sqlplus /nolog
2、conn /as sysdba;
3、show parameter open_cursor;得到最大值,默认是300
解决方法:你在打开一个游标的时候,记得关闭它,可以加代码:
getSqlMapClientTemplte.getSqlMapClient.commitTransaction();
我的错误是:在一次事务中连续打开两个游标,一个是update语句,另一个是insert语句,而且是批量执行,后果可想而知。
所以让它们每个执行100次就够了,两个一共也就200次,这样就没有超过最大值300。
你明白没有?