2009-08-06 1 views
2

Версия нашей базы данных Oracle составляет 10g.Ошибка «Курсор закрыт» при попытке выполнить Oracle SP с использованием JDBC

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

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) 

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

Спасибо!

ответ

4

Клиент, вызывающий хранимую процедуру, несет ответственность за закрытие курсора. Удалите код: CLOSE test_OUT;

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

 Смежные вопросы

  • Нет связанных вопросов^_^