2016-12-12 4 views
0

Ich versuche auf eine Prozedur zuzugreifen, die einen Cursor zurückgibt, meine Ergebnismenge ist nicht null noch resultset.next() gibt false zurück, und deshalb tritt die Kontrolle nicht ein während, bitte unten meine Prozedur und meinen Java-Code erwähnen und mir dabei helfen.ResultSet ist nicht null immer resultset.next() gibt false zurück

das ist mein Verfahren:

PROCEDURE get_app_biz_summary (p_application_name_i IN  VARCHAR2, 
           p_summary_o    OUT SYS_REFCURSOR) IS BEGIN IF p_application_name_i = 'ALL' THEN 
     OPEN p_summary_o FOR 
      SELECT application_name, 
        creation_date, 
        SUM (success_count) success, 
        SUM (error_count) "error", 
        SUM (warning_count) warning 
      FROM xxcss_sfm_app_biz_summary 
      WHERE 1 = 1 AND creation_date >= SYSDATE - 4 
     GROUP BY application_name, creation_date; ELSE 
     OPEN p_summary_o FOR 
      SELECT application_name, 
        biz_process_name, 
        creation_date, 
        SUM (success_count) success, 
        SUM (error_count) "error", 
        SUM (warning_count) warning 
      FROM xxcss_sfm_app_biz_summary 
      WHERE application_name = 
        NVL (p_application_name_i, application_name) 
        AND creation_date >= SYSDATE - 4 
     GROUP BY application_name, biz_process_name, creation_date; END IF; END get_app_biz_summary; 

END XXCSS_ORDER_STATUS_PKG; 

/ und das ist mein Java-Code:

try { 
      OracleCallableStatement cs = (OracleCallableStatement)jdbcTemplate 
     // CallableStatement cs=jdbcTemplate 
        .getDataSource() 
        .getConnection() 
        .prepareCall(
          "{call APPS.XXCSS_ORDER_STATUS_PKG.GET_APP_BIZ_SUMMARY(?,?)}"); 

      cs.setString(1, appName); 
      cs.registerOutParameter(2, OracleTypes.CURSOR); 
      cs.execute(); 
      resultSet= (OracleResultSet)cs.getCursor(2); 
      if(resultSet==null) 
       System.out.println("resultset null...."); // resultset is not null 
      System.out.println(resultSet.next()); // its returning false 
      while(resultSet.next()){ 
      System.out.println("in while"); 
       IBSave ibSave=new IBSave(); 
       ibSave.setApplicationName(resultSet.getString("APPLICATION_NAME")); 
+0

Hilft das? http://stackoverflow.com/questions/15517736/iterating-over-resultset-and-adding-its-value-in-a-arraylist – GhostCat

+1

Gibt Ihre Prozedur Daten zurück? Not null bedeutet nicht, dass Resultset Daten enthält! –

Antwort

0

1.Kann Sie sicher, dass Ihre Datenbank vornehmen wird, um Daten

2.Kann Rückkehr Sie überprüfen mit resultSet= (OracleResultSet)cs.getCursor(2); Vielleicht entfernen Sie diese bestimmte Zeile ??

Hoffe das hilft !!

Verwandte Themen