使用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();execute命令肯定会发生异常。
有什么想法吗?
发布于 2020-05-12 15:07:11
PL/SQL可能会自动关闭游标,而JDBC可能不会这样做:这可能是一种解释。也可能是Oracle OPEN_CURSORS参数太低。
这是Oracle中经常出现的错误,java.sql.SQLException: - ORA-01000: maximum open cursors exceeded中已经对此进行了详细说明
https://stackoverflow.com/questions/61745626
复制相似问题