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"));
Hilft das? http://stackoverflow.com/questions/15517736/iterating-over-resultset-and-adding-its-value-in-a-arraylist – GhostCat
Gibt Ihre Prozedur Daten zurück? Not null bedeutet nicht, dass Resultset Daten enthält! –