2 Stimmen

Fehler "Cursor ist geschlossen" - beim Versuch, einen Oracle SP über JDBC auszuführen

Die Oracle-Version unserer Datenbank ist 10g.

Die gespeicherte Prozedur wählt alle Elemente in einer Tabelle aus und gibt einen REF CURSOR-Typ wie folgt zurück: erstellen oder ersetzen

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;

Wenn diese gespeicherte Prozedur in JAVA ausgeführt wird, wird die folgende Ausnahme erhalten

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)

Ich versuche zu verstehen, was der Fehler ist und wie er behoben werden kann. Könnte mir bitte jemand helfen?

ありがとう!

4voto

Brian Punkte 13229

Der Client, der die gespeicherte Prozedur aufruft, ist für das Schließen des Cursors verantwortlich. Bitte entfernen Sie den Code: CLOSE test_OUT;

Der Kunde schließt sie ab. In diesem Fall ist der Client das JDBC-Programm, das die gespeicherte Prozedur aufruft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X