有关分页的存储过程
CREATE procedure p_splitpage
@sql nvarchar(4000),
@currentpage int=2,
@pagesize int=10,
@recordcount int=0 output,
@pagecount int=0 output
as
set nocount on
declare @p1 int
exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output
set @recordcount=@pagecount
--计算总页数
IF ISNULL(@pagesize,0) <1
SET @pagesize=10
SET @pagecount=(@pagecount+@pagesize-1)/@pagesize
IF ISNULL(@currentpage,0) <1 or ISNULL(@currentpage,0)> @pagecount
SET @currentpage=1
ELSE
SET @currentpage=(@currentpage-1)*@PageSize+1
select @recordcount recordcount ,@pagecount pagecount,@currentpage currentpage
exec sp_cursorfetch @p1,16,@currentpage,@pagesize
exec sp_cursorclose @p1
set nocount off
GO
我想让传递的当前页面(@currentpage大于总页数)@pagecount的话,当前页面就是总页数,如何修改这段存储过程?谢谢,在线等
------解决方案--------------------CREATE procedure p_splitpage
@sql nvarchar(4000),
@currentpage int=2,
@pagesize int=10,
@recordcount int=0 output,
@pagecount int=0 output
as
set nocount on
declare @p1 int
exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output
set @recordcount=@pagecount
--计算总页数
IF ISNULL(@pagesize,0) <1
SET @pagesize=10
SET @pagecount=(@pagecount+@pagesize-1)/@pagesize
IF ISNULL(@currentpage,0) <1 or ISNULL(@currentpage,0)> @pagecount
SET @currentpage=1
ELSE if @currentpage> @pagecount
set @currentpage=@pagecount
else
SET @currentpage=(@currentpage-1)*@PageSize+1
select @recordcount recordcount ,@pagecount pagecount,@currentpage currentpage
exec sp_cursorfetch @p1,16,@currentpage,@pagesize
exec sp_cursorclose @p1
set nocount off
GO