Java SQL Server 2008上的分页
我试图使用分页从SQLServer2008获取数据 我的程序是:Java SQL Server 2008上的分页,java,mysql,sql,sql-server,sql-server-2008,Java,Mysql,Sql,Sql Server,Sql Server 2008,我试图使用分页从SQLServer2008获取数据 我的程序是: 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 @R
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
我曾尝试循环查询,但不断得到相同的结果。有人能说出我在哪里做过更正吗。我已经创建了我的存储过程,可以进行分页,将其与您的进行比较,然后尝试:
ALTER PROCEDURE [dbo].[Sp_get_persons] (@pageNo INT,
@pageSize INT)
AS
BEGIN
SELECT id,
name,
[desc],
[address],
phone,
email
FROM (SELECT id,
name,
[desc],
[address],
phone,
email,
Row_number()
OVER (
ORDER BY id ) AS RowNum
FROM persons.dbo.person) person
WHERE person.rownum BETWEEN ( ( @pageNo - 1 ) * @pageSize + 1 ) AND (
@pageNo * @pageSize )
END
使用此选项卡值函数:
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
)
像这样使用
从dbo.GetPagedData(pagesize,pageindex)中选择*
i、 e从dbo.GetPagedData(20,0)中选择*
注意:页面索引从0开始。
在Java中,通过每次递增pageindex来循环此函数。在循环中,您是否更改了sql字符串?因此,从字符串sql=“exec Paginate 10,1”;字符串sql=“exec Paginate 10,2”;或者至少使用一个计数器来增加页码?
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
)