if exists(select * from sys.objects where name=\'存储过程名称\')
drop proc 存储过程名称
go
CREATE proc 存储过程名称
@tableName varchar(8000), --表名、视图名
@indexCol varchar(50) = \'a.id\', --标识列名(如:比如主键、标识,推荐使用索引列)
@pageSize int = 10, --页面大小
@pageIndex int = 0, --当前页
@orderCol varchar(100) = \'a.id desc\',--排序 (如:id)
@where varchar(max) = \'\', --条件
@columns varchar(500) = \'*\' --要显示的列
as
declare @sql varchar(max)
declare @sql2 varchar(max)
declare @where2 varchar(max)
if @where <> \'\'
begin
select @where2 = \' And \' + @where
select @where = \' Where \' + @where
end
else
select @where2 = \'\'
select @sql = \'Select Top \' + Convert(varchar(10),@pageSize) + \' \' + @columns + \' From \' + @tableName
select @sql2 = @sql + @where
select @sql = @sql + \' Where \' + \'(\' + @indexCol + \' Not In (Select Top \' + Convert(varchar(10), ((@pageIndex-1)*@pageSize)) + \' \' + @indexCol + \' From \' + @tableName + @where + \' Order by \'+ @orderCol +\'))\'
select @sql = @sql + @where2
select @sql = @sql + \' Order by \' + @orderCol
--获取数据集
exec (@sql)
PRINT @sql
select @sql2 = Replace(@sql2,\'Top \' + Convert(varchar(10), @pageSize) + \' \' + @columns, \'count(1)\')
--获取总数据条数
exec(@sql2)
GO
相关文章: