有一存储过程,返回一个参数和查询的结果集
存储过程没有问题在调用的时候,我如果用
ResultSet rs = cs.executeQuery();
则可以将结果集查出来,但是 int totalCount = cs.getInt(4); 就得不到返回的参数值了
而且用了这句后结果集也查询不出来了,为空我看到网上有人这样处理:
cs.execute();
int totalCount = cs.getInt(4);
ResultSet rs = cs.getResultSet();这样我也试过,但只要加上int totalCount = cs.getInt(4);这句后,结果集也就为空了请问高手,这是什么原因?
存储过程如下ALTER PROC [dbo].[query_bypage]
(
@int_pageNumber int, --每页显示条数
@int_currentPage int, --当前页数
@sqlString nvarchar(400),
@int_totalCount int output --总的记录数
)
AS
BEGIN
/*------------------------返回相关参数--------------------------*/
DECLARE @chvn_sql nvarchar(400),
@chvn_params nvarchar(100),
@chvn_count_sqlStr nvarchar(400) set @chvn_sql = 'SELECT TOP ' + rtrim(@int_pageNumber) + ' * from (' + @sqlString + ') tb '
+ 'WHERE tb.rowno > ' + rtrim(@int_pageNumber * (@int_currentPage-1)) EXEC sp_executesql @chvn_sql
/*------------计算总的记录数---------------*/
set @chvn_count_sqlStr = 'select ' + rtrim(@int_totalCount) +' = count(*) from (' + @sqlString + ') tb'
SET @chvn_params = ' ' + rtrim(@int_totalCount) +' int output ' EXEC sp_executesql @chvn_count_sqlStr,
@chvn_params,
@int_totalCount output
END

解决方案 »

  1.   

    有的
    我现在是我的存储过程有点问题,不应该加上rtrim,去掉就好了但是现在的问题是,
    ResultSet rs = cs.executeQuery();
    int totalCount = cs.getInt(4);
    这两句只要加上第二句,结果集就出不来了
      

  2.   

    而且int totalCount = cs.getInt(4); 得到的返回结果又是正确的,就是这两句不 能同时用,请教高手
      

  3.   

    能否把你的结果集作为一个输出参数,然后用registerOutParameter的方式
    ResultSet rs =(ResultSet) cs.getObject(5);
    的方式来做?
      

  4.   

    楼主看看是不是Hibernate缓存导致的问题
      

  5.   


    这位大侠,我没有启用Hibernate缓存呀
      

  6.   

    呵呵,已经搞定了
    原来是顺序问题,ResultSet rs = cs.executeQuery(); 后,就要进行取值
    int totalCount = cs.getInt(4);要取完值后再进行