有一存储过程,返回一个参数和查询的结果集
存储过程没有问题在调用的时候,我如果用
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
存储过程没有问题在调用的时候,我如果用
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
我现在是我的存储过程有点问题,不应该加上rtrim,去掉就好了但是现在的问题是,
ResultSet rs = cs.executeQuery();
int totalCount = cs.getInt(4);
这两句只要加上第二句,结果集就出不来了
ResultSet rs =(ResultSet) cs.getObject(5);
的方式来做?
这位大侠,我没有启用Hibernate缓存呀
原来是顺序问题,ResultSet rs = cs.executeQuery(); 后,就要进行取值
int totalCount = cs.getInt(4);要取完值后再进行