CREATE PROCEDURE [dbo].[getPage]
@pageSize int, --页尺寸
@currentPage int = 1, --当前页
@fields varchar(2000) = '*', --返回的字段
@tablename varchar(200), --表名
@orderString varchar(1000), --排序字符串
@whereString varchar(1000) --条件字符串
AS
BEGIN
DECLARE @sql varchar(2000)
DECLARE @strOrder varchar(2000)
DECLARE @strWhere varchar(2000)
set @strOrder = REPLACE(RTRIM(LTRIM(@orderString)),'order by','')
if @strOrder != ''
set @strOrder = ' order by ' + @strOrder
else
set @strOrder = ' order by ID DESC'
set @strWhere = REPLACE(RTRIM(LTRIM(@whereString)),'where','')
if @strWhere != ''
set @strWhere = ' where ' + @strWhere
if @pageSize = 0
set @sql = 'select ' + @fields + ' from ' + @tablename + @strWhere + @strOrder
else
if @currentPage = 1
set @sql = 'select top(' + Str(@pageSize) + ') ' + @fields + ' from ' + @tablename + @strWhere + @strOrder
else
begin
set @sql = 'select top(' + Str(@pageSize) + ') * from (select top(' + Str(@pageSize * @currentPage) + ') ' + @fields + ', ROW_NUMBER() OVER ('
set @sql = @sql + @strOrder
set @sql = @sql + ') As RowNumber From ' + @tablename
set @sql = @sql + @strWhere
set @sql = @sql + ') as t where t.RowNumber > ' + Str(@pageSize * (@currentPage - 1))
set @sql = @sql + @strOrder
end
exec(@sql)
END