CallableStatement调用sql server存储过程的问题(请帮帮忙啊)

tansroy 2003-11-21 01:43:31
java程序是这样的:
...
CallableStatement toesUp = null;
toesUp= conn.prepareCall("{call pagination(?,?,?,?,?,?) }");
toesUp.setString(1,strPerpagenumber);
toesUp.setString(2,strPagenumber);
toesUp.setString(3,strTablename);
toesUp.setString(4,strOrderby);
toesUp.setString(5,strSqlCondition);
toesUp.registerOutParameter(6,java.sql.Types.VARCHAR);
try
{
toesUp.execute();
ResultSet rs = (ResultSet) toesUp.getResultSet();
strTotalresult=toesUp.getString(6);
ResultSetMetaData rsmd = null;
...
}

SQL SERVER的存储过程是这样的
...
create procedure pagination
@perpagenumber varchar(10)='20',
@pagenumber varchar(10)='1',
@tablename varchar(20)='tmp_t_cs_infos_his',
@orderby varchar(200)='order by cust_code,backupdate',
@sqlcondition varchar(200)=''
@totalresult varchar(200) output
as
begin
...
select * from tmp_t_cs_infos_his
select @totalresult=count(*) from tmp_t_cs_infos_his
end
我跟踪调用的时候,会发现ResultSet rs = (ResultSet) toesUp.getResultSet()的rs为NULL值,请高手帮帮忙啊
如果我去掉“存储过程的返回参数”就OK了,请问是什么原因啊?
...全文
88 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tansroy 2003-11-21
  • 打赏
  • 举报
回复
哦 是这样吗?不会吧 这么难吗?哎呀!·
freelarry 2003-11-21
  • 打赏
  • 举报
回复
取2个值的问题我以前也碰到过,没解决,后来用另一个办法替代了:
select a.*,totalresult=count(*) from tmp_t_cs_infos_his a
在结果集中取totalresult就可以了
tansroy 2003-11-21
  • 打赏
  • 举报
回复
有的啊 这不重要 ResultSet rs = (ResultSet) toesUp.getResultSet();这句话是正确的。当去掉第六个参数时(也就是没有@totalresult varchar(200) output)时,rs是有值的。而有了output参数后,rs就为null值。怎么回事?
freelarry 2003-11-21
  • 打赏
  • 举报
回复
ResultSet rs = (ResultSet) toesUp.getResultSet();

getResultSet();这个函数你从哪里找来的??我在java的api上怎么找不到???
tansroy 2003-11-21
  • 打赏
  • 举报
回复
也不行啊 关键是rs为null值啊
youthy_yy 2003-11-21
  • 打赏
  • 举报
回复
ResultSet rs = (ResultSet) toesUp.getResultSet();
rs.next(); //加上这个
strTotalresult=toesUp.getString(6);
out.println(strTotalresult);
……
tansroy 2003-11-21
  • 打赏
  • 举报
回复
还是不行啊
zhx_232 2003-11-21
  • 打赏
  • 举报
回复
如果有返回参数要先调用toesUp.getUpdateCount()
freelarry 2003-11-21
  • 打赏
  • 举报
回复
如果你只取一个数:
toesUp= conn.prepareCall("{?=call pagination(?,?,?,?,?,?) }");
toesUp.registerOutParameter(1,java.sql.Types.VARCHAR);

begin
...
select * from tmp_t_cs_infos_his
select @totalresult=count(*) from tmp_t_cs_infos_his
return @totalresult
end
tansroy 2003-11-21
  • 打赏
  • 举报
回复
请各位大侠帮帮忙啊

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧