首页 > 代码库 > 存储过程分页语句
存储过程分页语句
create proc [dbo].[ceb_Pagination]@strFields nvarchar(2000), --字段名@strTableName nvarchar(2000), --表名@strWhere nvarchar(4000), --条件 无需加where@strOrderBy nvarchar(200), --排序 必添 无需加order by@PageSize int, --分页大小@CurrentPage int, --当前页,1为起始页@PageCount int output, --返回总页数@RecordCount int output --返回记录总数asbegindeclare @StartIndex int --定义起始位置set @StartIndex = (@currentPage - 1) * @PageSize + 1declare @strSql1 nvarchar (Max) --数据查询declare @strSql2 nvarchar (Max) --统计记录总数declare @ParmDefinition nvarchar (Max)set @ParmDefinition = N‘@tmp int output‘set @strSql1 = N‘select row_number() over (order by ‘ + @strOrderBy + ‘ ) as RowID, ‘set @strSql2 = ‘select @tmp = count(*) ‘if @strFields <> ‘‘ set @strSql1 = @strSql1 + @strFieldselse set @strSql1 = @strSql1 + ‘ * ‘if @strTableName <> ‘‘begin set @strSql1 = @strSql1 + ‘ from ‘ + @strTableName set @strSql2 = @strSql2 + ‘ from ‘ + @strTableNameendif @strWhere <> ‘‘begin set @strSql1 = @strSql1 + ‘ where ‘ + @strWhere set @strSql2 = @strSql2 + ‘ where ‘ + @strWhereendexec sp_executesql @strSql2,@ParmDefinition,@tmp = @RecordCount output --执行统计记录总数SQL语句if @RecordCount % @PageSize = 0 --计算总页数 set @PageCount = @RecordCount / @PageSizeelse set @PageCount = @RecordCount / @PageSize + 1set @strSql1 = ‘with TempTable as ( ‘ + @strSql1 + ‘ ) select * from TempTable where RowID between ‘ + Convert(varchar(10),@StartIndex) + ‘ and ‘ + Convert(varchar(10),@StartIndex + @PageSize - 1)SET @strSql1 =@strSql1 +‘ order by RowID‘exec(@strSql1)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。