gpt4 book ai didi

java - ResultSet 不为 null 仍然 resultet.next() 返回 false

转载 作者:行者123 更新时间:2023-12-01 09:07:59 26 4
gpt4 key购买 nike

我正在尝试访问一个返回游标的过程,我的结果集不为空,但 resultet.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"));

最佳答案

不必要地不要调用 resultSet.next() ,因为根据文档:- http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/sql/ResultSet.java#ResultSet.next%28%29 。如果你打电话

System.out.println(resultSet.next()); // its returning false

它将把光标移动到下一行。并再次调用

while(resultSet.next()){

实际上指向你的第二行。因此结果集中只返回了一条记录。

关于java - ResultSet 不为 null 仍然 resultet.next() 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41100258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com