【发布时间】:2020-05-12 06:57:21
【问题描述】:
使用 JUNIT,我多次调用存储过程 java 端(比如说 10 次)。在打了几个电话之后(比如说 7 七次),我有一个 java.sql.SQLException: ORA-01000: too many cursors open
我在一个plsql脚本中对Oracle端进行了相同数量的测试:当我调用这个程序10次或20次时没有问题,我使用的所有游标在我使用后都关闭了。
所以问题似乎出在 java 方面,虽然错误是 oracle 代码 (???)。
Java端,我用语句调用过程,得到resultSet:
cstmt = c.prepareCall("CALL myStoredProcedure(?,?,?,?)");
cstmt.setDate(1, sDate);
cstmt.setString(2, myVar);
cstmt.setString(3, myVar2);
cstmt.registerOutParameter(4, java.sql.Types.ARRAY, "My_TYPE_ITEMS");
cstmt.execute();
...
rs.close();
cstmt.close();
异常肯定发生在执行命令上。
有什么想法吗?
【问题讨论】:
-
代码中的某个地方没有正确关闭
Statement实例。
标签: java oracle stored-procedures