我试图使用分页从SQL SERVER 2008中获取数据。
我的程序是:
CREATE PROC Paginate
@PageSize int, @PageNumber int
AS
Declare @RowStart int
Declare @RowEnd int
if @PageNumber > 0
Begin
SET @PageNumber = @PageNumber -1
SET @RowStart = @PageSize * @PageNumber + 1;
SET @RowEnd = @RowStart + @PageSize - 1 ;
With claim_user_info_paginate AS
( SELECT userNbr, userName,
ROW_NUMBER() OVER (order by userNbr) as UserNumber
FROM claim_user_info )
select *
from claim_user_info_paginate
Where UserNumber >= @RowStart and UserNumber <= @RowEnd
END
我需要连续获取记录,但是上述过程仅返回第一个10。在这种情况下,我应该怎么做才能使用Java连续获取表中的所有记录。
我的Java代码:
String sql="exec Paginate 10,1";
resultSet = statement.executeQuery(sql);
我试图循环查询,但我不断得到相同的结果。有人可以说我在哪里也可以做校正。
使用此tabe值函数:
ALTER FUNCTION [dbo].[GetPagedData]
(
-- Add the parameters for the function here
@pagesize int,
@pageindex int
)
RETURNS TABLE
AS
RETURN
(
SELECT TOP (@pagesize) * ,Row_number() Over(order by a.ID) as count FROM
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY ID) AS num
FROM dbo.Employees where IsActive=1
) AS a
WHERE num > @pageindex*@pagesize
)
像这样使用select * from dbo.GetPagedData(pagesize,pageindex),即select * from dbo.GetPagedData(20,0)注意:页面索引从0开始。
在Java中,通过每次递增pageindex来遍历此函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句