【发布时间】:2016-12-12 11:51:20
【问题描述】:
我正在尝试访问一个返回游标的过程,我的结果集不为 null 仍然 resultset.next() 返回 false,这就是为什么控制没有进入 while,请参阅下面提到我的过程和我的 java 代码并帮助我解决这个问题。
这是我的程序:
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"));
【问题讨论】:
-
您的程序是否返回数据?不为空不代表结果集有数据!