sqlj.runtime.ExecutionContext.OracleContext中的oracleClose()和oracleCloseQuery()是做什麼的。來自Oracle PL/SQL存儲過程的JDBC結果集
由於我們升級JDBC驅動程序罐子ojdbc5.jar
與在該oracleClose()
使用resultset.next()
,而不是與oracleCloseQuery()
當finally塊,我們得到以下例外。使用oracleCloseQuery()
安全嗎?該數據庫是Oracle 11g和WAS 6.1.X.X.感謝您的迴應。 以下是錯誤消息:
java.sql.SQLException中:封閉聲明:下 在oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) 在oracle.jdbc.driver.DatabaseError .newSQLException(DatabaseError.java:131) 在oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:197) 在oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261) 在oracle.jdbc .driver.DatabaseError.throwSqlException(DatabaseError.java:269) at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:205) at com.westgroup.pubsvc.r ms.models.ResultSetSRC.getNextResult(ResultSetSRC.java:112)
感謝您的回覆。該方法返回Resultset並在執行finally塊後稍後使用,這不是一種好的做法,但使用Oracle JDBC Driver版本 - 「10.2.0.1.0」。而這段代碼是Jpublisher從存儲過程生成的java代碼。那麼這是否意味着我們需要更改存儲過程。 – Lalitha 2010-09-17 16:25:52
我不確定JPublisher在做什麼,但是在類似方法之外傳遞'ResultSet'是一個壞主意。您不需要更改存儲過程。您只需要將ResultSet映射到列表,如答案中所示。 –
BalusC
2010-09-17 20:08:10