zcc0912

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

分类:

技术点:

相关文章: