使用Java

时间:2016-10-27 10:11:12

标签: java oracle stored-procedures

我想从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)

请帮忙吗?

0 个答案:

没有答案