SQL Server 一个比较通用的分页存储过程

来源:互联网 发布:redis分布式 数据一致 编辑:程序博客网 时间:2024/04/30 04:53

包括了: 分页 和 排序


USE [DataBaseName]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCreate  procedure [dbo].[procedureName]        @srcTableName Nvarchar(50),          --视图或表名        @condition varchar(1000),            --查询条件           @pageSize int = 10,                  --每页长度(1~n)    @pageIndex int = 1,                  --页码(1~n)                     @orderBy Nvarchar(50),               --排序方式,必须为查询结果中的字段名    @isDesc Nvarchar(50) ,               --倒序还是正序        @hascount int = 0                    --查询结果是否带总行数(0:不带;1:带)    ASbegin -- 参数容错    if (@pageIndex <= 0)    begin        set @pageIndex = 1       end    declare @select varchar(200)        if (@hascount = 0)beginset @select = ' select * ' ;endelse if ( @hascount = 1 ) begin set @select = ' select *,(select count(row_number) from SearchResult as count) ';end            declare @sql varchar(6000)    set @sql=    ' with SearchResult as    (             select row_number() over (order by ' + @orderBy + ' ' + @isDesc + ') as row_number , 其它所需字段       from  ' + @srcTableName + ' ' + @condition +        ' ) '    + @select + ' from SearchResult where row_number > ' + cast (@pageSize*(@pageIndex-1) as varchar(50)) +     ' and row_number <= ' + cast (@pageSize*(@pageIndex) as varchar(50)) +     ' order by ' + @orderBy + ' ' + @isDesc    print @sql    exec(@sql)endGO


0 0