【问题标题】:"Cursor is closed" error - when trying to execute an Oracle SP using JDBC“光标已关闭”错误 - 尝试使用 JDBC 执行 Oracle SP 时
【发布时间】:2009-08-06 21:14:26
【问题描述】:

我们数据库的Oracle版本是10g。

存储过程选择表中的所有元素,并返回一个 REF CURSOR 类型,如下所示: 创建或替换

PROCEDURE S_S_TEST( 
  test_OUT OUT OAS_TYPES.REFCURSOR
) 
AS
BEGIN
  OPEN test_OUT FOR      
      SELECT *
      FROM table_p;
   CLOSE test_OUT;
END S_S_TEST;

当这个存储过程在 JAVA 中执行时,会得到以下异常-

java.sql.SQLException: Cursor is closed. at oracle.jdbc.driver.T4CResultSetAccessor.getCursor(T4CResultSetAccessor.java:323) at oracle.jdbc.driver.ResultSetAccessor.getObject(ResultSetAccessor.java:85) at oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:1401) at com.ibm.ws.rsadapter.jdbc.WSJdbcCallableStatement.getObject(WSJdbcCallableStatement.java:443)

我正在尝试了解错误是什么以及如何修复它。有人可以帮帮我吗?

谢谢!

【问题讨论】:

    标签: oracle exception jdbc cursor


    【解决方案1】:

    调用存储过程的客户端负责关闭游标。请删除代码: 关闭 test_OUT;

    客户端关闭它。在这种情况下,客户端是调用存储过程的 JDBC 程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多