打开太多光标

问题描述 投票:0回答:1

使用JUNIT,我多次调用一个存储过程java端(比方说10次)。在调用了几次之后(比如说7次7次),我有了一个 java.sql.SQLException: ORA-01000: too many cursors open

我有相同数量的测试Oracle侧在一个plsql脚本。我调用这个过程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();

异常发生在执行命令时是肯定的。

有什么办法吗?

java oracle stored-procedures
1个回答
0
投票

PLSQL可能会自动关闭游标,而JDBC可能不会这样做:这可能是一个解释。也可能是Oracle的OPEN_CURSORS参数太低。

这是在Oracle中经常出现的错误,已经在 java.sql.SQLException: - ORA-01000: 超过了最大打开的游标。

© www.soinside.com 2019 - 2024. All rights reserved.