SqlServer万能分页存储过程

alter proc SP_Hangkong
@table nvarchar(200), --表,字段,条件,
@field nvarchar(2000)='*', --字段
@where nvarchar(2000), --条件
@order nvarchar(200), --排序所需要的的
@pageSize int, --每页显示的个数
@pageNumber int,--页数
@Total int output
as
begin
declare @strSql nvarchar(4000) --拼接字符串
declare @strCount nvarchar(2000) --拼接用于返回的总行数
declare @start int,@end int
set @start = (@pageNumber-1)*@pageSize+1 --开始的页数
set @end = @start+@pageSize - 1 --结束的页数

set @strSql = 'select * from (select ROW_NUMBER() over(order by '+@order+') as rowId,'+@field+' from '+@table+' '+@where+') as t where (t.rowId between '+LTRIM(str(@start))+' and '+LTRIM(str(@end))+')'
set @strCount='select @Total=count(*) from '+@table+''

--判断条件

if(@where is not null or @where != '')
begin
set @strCount=@strCount+' '+@where
end

--执行查询语句
exec(@strsql) --这里没有输出参数
print @strsql
exec sp_executesql @strCount,N'@Total int output',@Total output
end

原文地址:https://www.cnblogs.com/lvjingchao/p/13064212.html