博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql Service中的分页
阅读量:6655 次
发布时间:2019-06-25

本文共 2214 字,大约阅读时间需要 7 分钟。

创建存储过程如下:

1 CREATE PROCEDURE [dbo].[sp_GetPageList] 2     @TableName varchar(5000),        --表名 3     @SelectFields varchar(5000) = '*',    --字段名(全部字段为*) 4     @OrderField varchar(5000),        --排序字段(必须!支持多字段) 5     @sqlWhere varchar(5000) = Null,--条件语句(不用加where) 6     @pageSize int,                    --每页多少条记录 7     @pageIndex int = 1 ,            --指定当前为第几页 8     @totalRecord int = 0 OUTPUT, 9     @TotalPage int output            --返回总页数10 AS11 BEGIN12     Begin Tran --开始事务13     Declare @sql nvarchar(4000); 14     print @totalRecord15     --if @totalRecord<=0 begin16         --计算总记录数17         if (@SqlWhere='' or @sqlWhere is NULL)18             set @sql = 'select @totalRecord = count(*) from ' + @TableName19         else20             set @sql = 'select @totalRecord = count(*) from ' + @TableName + '  where ' + @sqlWhere21             22         EXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--计算总记录数       23     --end24     --计算总页数25     select @TotalPage=CEILING((@totalRecord+0.0)/@PageSize)26     if (@SqlWhere='' or @sqlWhere is NULL)27         set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName 28     else29         set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere    30     --处理页数超出范围情况31     if @PageIndex<=0 32         Set @pageIndex = 133     if @pageIndex>@TotalPage34         Set @pageIndex = @TotalPage35      --处理开始点和结束点36     Declare @StartRecord int37     Declare @EndRecord int38     set @StartRecord = (@pageIndex-1)*@PageSize + 139     set @EndRecord = @StartRecord + @pageSize - 140     --继续合成sql语句41     set @Sql = @Sql + ') as t where rowId between ' + Convert(varchar(50),@StartRecord) + ' and ' +  Convert(varchar(50),@EndRecord)42         print @sql 43     Exec(@Sql)44     ---------------------------------------------------45     If @@Error <> 046     Begin47         RollBack Tran48         Return -149     End50     Else51     Begin52         Commit Tran53         Return @totalRecord ---返回记录总数54     End   55 END

 

转载于:https://www.cnblogs.com/ABblog/p/9273599.html

你可能感兴趣的文章
jenkins+docker+nodejs项目的自动部署环境
查看>>
网游高层离职潮例行上演:多数选择创业
查看>>
赛门铁克 BE12.5备份exchange 2010 dag问题
查看>>
如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接
查看>>
mysql 导出数据
查看>>
2014-10-10 LAMP第一部分-环境搭建
查看>>
iPhone 4S
查看>>
Attribute listkey invalid for tag checkboxlist according to TLD
查看>>
IOS 的UINavigatonBar控件的titleTextAttributes的字典类型的属性
查看>>
项目实现
查看>>
查看linux系统版本是32位的还是64位的
查看>>
The Little Prince-12/09
查看>>
ios数据存储4种
查看>>
统计字符串在文件中出现的次数
查看>>
QtCreator源码分析(一)——QtCreator源码简介
查看>>
Java基础学习总结(9)——this关键字
查看>>
Enum简单例子DropdownList
查看>>
c#导出bugfree3.0的数据到禅道
查看>>
SpringMVC权限管理
查看>>
Java Web学习总结(18)——JSP标签
查看>>