我想从Oracle SP获取一个ResultSet(我已经使用SQL Server完成了它)。
我用来执行存储过程的代码是:
public static ResultSet ExecuteGetAnalyseOrdon(Connection conn, int LigneIndex, String TypeAlerte)
throws SQLException
{
String OraQuery = "{call Package_Name.SP_Name(?,?,?,?,?)}";
CallableStatement stmt = null;
ResultSet rset = null;
stmt = conn.prepareCall(OraQuery);
stmt.setInt(1, LigneIndex);
stmt.setString(2, "H");
stmt.setString(3, null);
stmt.setString(4, null);
stmt.registerOutParameter(5, OracleTypes.CURSOR);
stmt.executeUpdate();
rset = (ResultSet) stmt.getObject(5);
while (rset.next()) {
System.out.println("Test");
System.out.println(rset.getString(0));
}
return rset;
}
存储过程的代码很长,但这是声明
PROCEDURE SP_Name (Param1 IN INT,
Param2 IN VARCHAR2,
Param3 IN VARCHAR2,
Param4 IN VARCHAR2,
cur_res OUT SYS_REFCURSOR);
执行我的java代码时出现此错误:
Exception in thread "main" java.sql.SQLException: ORA-01578: bloc de données ORACLE altéré (fichier # 201, bloc # 1920)
ORA-01110: fichier de données 201 : 'C:\APP\ACER\ORADATA\ORCL\TEMP01.DBF'
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:195)
at oracle.jdbc.driver.T4CStatement.fetch(T4CStatement.java:1111)
at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:384)
at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:288)
at betaAutomationOracle.ExecuteGetAnalyseOrdo.ExecuteGetAnalyseOrdon(ExecuteGetAnalyseOrdo.java:28)
at betaAutomationOracle.ExecuteScript.main(ExecuteScript.java:104)
请帮忙吗?