CREATE PROCEDURE dbo.EligibleYouthDataPagination
@TableName varchar(50),
@ID varchar(50),
@PageSize int ,
@PageNum int,
@TotalPageNumber int output,
@MiddlePageNumber int output
AS
declare @recordCount int
declare @totalPageNum int
declare @middlePageNum int
declare @LastPageRecordNum int
declare @ydata int
declare @strSQL varchar(100)
declare @strPageSize varchar(50)
declare @strRowsNum varchar(50)
set @strPageSize=cast(@PageSize as varchar(50))
exec dbo.EligibleYouthRecordCount @recordCount out
select @middlePageNum=(@recordCount/@PageSize)/2+1
select @MiddlePageNumber=@middlePageNum
select @ydata=@recordCount%@PageSize
if @ydata=0
begin
select @LastPageRecordNum=@PageSize
select @totalPageNum=@recordCount/@PageSize
end
else
begin
select @LastPageRecordNum=@ydata
select @totalPageNum=@recordCount/@PageSize+1
end
select @TotalPageNumber=@totalPageNum
if @PageNum>@middlePageNum and @PageNum<@totalPageNum
begin
select @strRowsNum=cast((@PageSize*(@totalPageNum-@PageNum-1)+@LastPageRecordNum) as varchar(50))
exec(' select * '+
' from ( select top '+@strPageSize +' * '+
' from '+@TableName +
' where ' + @ID+' <(select min('+@ID+')'+
' from ( select top '+ @strRowsNum+ ' ' +@ID+
' from '+@TableName+
' order by ' +@ID+' desc )' +' as t)'+
' order by '+@ID +' desc '+
') as T'
+' order by '+@ID +' asc')
exec (@strSQL);
end
if @PageNum>=@totalPageNum
begin
declare @strLastPageRecordNum varchar(50)
select @strLastPageRecordNum=cast(@LastPageRecordNum as varchar(50))
select @strSQL='select * '+
' from (select top '+@strLastPageRecordNum+' * '+
' from '+ @TableName+
' order by '+@ID +' desc) as t '
+' order by '+@ID
exec(@strSQL)
end
if @PageNum<=@middlePageNum and @PageNum<>1
begin
select @strRowsNum=cast(@PageSize*(@PageNum-1) as varchar(50))
exec('select top '+@strPageSize+' * from '+@TableName +
' where '+@ID+'>(select max( '+@ID+' )'+
'from(select top '+@strRowsNum+' '+@ID+
' from '+@TableName +
' ORDER BY ' +@ID +') AS '+@TableName+' )'+
' ORDER BY '+@ID)
end
if @PageNum<=1
begin
exec('select top '+@strPageSize+' * from '+@TableName +' order by '+@ID );
end
GO
浙公网安备 33010602011771号