カーソルを返すプロシージャにアクセスしようとしていますが、結果セットがnullではありません。resultset.next()はfalseを返しています。私の手続きと私のJavaコードについては以下を参照してください。ResultSetがnullではありませんまだresultet.next()がfalseを返しています
これは私の手順です:
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;
/ と、これは私のJavaコードです:
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"));
これは役に立ちますか? http://stackoverflow.com/questions/15517736/iterating-over-resultset-and-adding-its-value-in-an-arraylist – GhostCat
プロシージャはデータを返しますか? nullでないと、結果セットにデータがあることを意味しません。 –