Ошибка «Курсор закрыт» - при попытке выполнить Oracle SP с использованием JDBC - PullRequest
2 голосов
/ 07 августа 2009

Версия нашей базы данных Oracle - 10 г.

Хранимая процедура выбирает все элементы в таблице и возвращает тип 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)

Я пытаюсь понять, что это за ошибка и как ее можно исправить. Может ли кто-нибудь помочь мне?

Спасибо!

1 Ответ

4 голосов
/ 07 августа 2009

Клиент, вызывающий хранимую процедуру, отвечает за закрытие курсора. Пожалуйста, удалите код: ЗАКРЫТЬ test_OUT;

Клиент закрывает его. В этом случае клиент - это программа JDBC, которая вызывает хранимую процедуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...