/*--分页存储过程:*/
CREATE PROCEDURE [dbo].[sp_Pagination]
@sqlstr nvarchar(4000), --查询字符串
@pageindex int,--第N页
@pagesize int--每页行数
AS
BEGIN
set nocount on
declare @P1 int,--P1是游标的id
@rowcount int
--rowsum:总行数,pagesum:总页数
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
--select @rowcount as rowsum,ceiling(1.0*@rowcount/@pagesize) as pagesum,@pageindex as currentpage
--获取数据读取游标
set @pageindex=(@pageindex-1)*@pagesize+1
--如果读取行数大于总记录数,从第一行数据开始读取数据
IF @pageindex>@rowcount
begin
set @pageindex=1
end
exec sp_cursorfetch @P1,16,@pageindex,@pagesize
exec sp_cursorclose @P1
END
GO
/*--分页存储过程:*/
CREATE PROCEDURE [dbo].[sp_Pagination]
@sqlstr nvarchar(4000), --查询字符串
@pageindex int,--第N页
@pagesize int--每页行数
AS
BEGIN
set nocount on
declare @P1 int,--P1是游标的id
@rowcount int
--rowsum:总行数,pagesum:总页数
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
--select @rowcount as rowsum,ceiling(1.0*@rowcount/@pagesize) as pagesum,@pageindex as currentpage
--获取数据读取游标
set @pageindex=(@pageindex-1)*@pagesize+1
--如果读取行数大于总记录数,读取最后一页数据数据
IF @pageindex>@rowcount
begin
set @pageindex=(ceiling(1.0*@rowcount/@pagesize) -1)*@pagesize+1
end
exec sp_cursorfetch @P1,16,@pageindex,@pagesize
exec sp_cursorclose @P1
END
GO