sqlserver分页存储过程实例
创始人
2024-07-13 16:21:42
0

在SQL数据库中,经常需要用到分页,下面就将为您示例sqlserver分页存储过程的建立,供您参考。如果您在sqlserver分页方面遇到过问题,不妨一看,相信对您更好掌握sqlserver分页会有帮助。

  1. create proc commonPagination   
  2. @columns varchar(500), --要显示的列名,用逗号隔开   
  3. @tableName varchar(100), --要查询的表名   
  4. @orderColumnName varchar(100), --排序的列名   
  5. @order varchar(50), --排序的方式,升序为asc,降序为 desc   
  6. @where varchar(100), --where 条件,如果不带查询条件,请用 11=1   
  7. @pageIndex int, --当前页索引   
  8. @pageSize int, --页大小(每页显示的记录条数)   
  9. @pageCount int output --总页数,输出参数   
  10. as   
  11. begin   
  12. declare @sqlRecordCount nvarchar(1000) --得到总记录条数的语句   
  13. declare @sqlSelect nvarchar(1000) --查询语句   
  14. set @sqlRecordCount=N'select @recordCount=count(*) from '   
  15. +@tableName + ' where '+ @where   
  16. declare @recordCount int --保存总记录条数的变量   
  17. exec sp_executesql @sqlRecordCount,N'@recordCount int output',@recordCount output   
  18. --动态 sql 传参   
  19. if( @recordCount % @pageSize = 0) --如果总记录条数可以被页大小整除   
  20. set @pageCount = @recordCount / @pageSize --总页数就等于总记录条数除以页大小   
  21. else --如果总记录条数不能被页大小整除   
  22. set @pageCount = @recordCount / @pageSize + 1 --总页数就等于总记录条数除以页大小加1   
  23. set @sqlSelect =   
  24. N'select '+@columns+' from (   
  25. select row_number() over (order by '   
  26. +@orderColumnName+' '+@order   
  27. +') as tempid,* from '   
  28. +@tableName+' where '+ @where   
  29. +') as tempTableName where tempid between '   
  30. +str((@pageIndex - 1)*@pageSize + 1 )   
  31. +' and '+str( @pageIndex * @pageSize)   
  32. exec (@sqlSelect) --执行动态Sql   
  33. end   
  34. go   
  35. --以下是调用示例   
  36. use pubs   
  37. go   
  38. declare @pageCount int   
  39. exec commonPagination   
  40. 'job_id,job_desc','jobs','job_id',   
  41. 'asc','11=1',2,2,@pageCount output   
  42. select '总页数为:' + str(@pageCount)  
  43. 详细出处参考:http://www.jb51.net/article/19936.htm 

 

 

 

【编辑推荐】

sql server分页的两种方法比较

SQL SERVER分区视图

SQL中的分析函数

SQL中返回计算表达式的函数

SQL中DATENAME函数的用法

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
规避非法攻击 用好路由器远程管... 单位在市区不同位置设立了科技服务点,每一个服务点的员工都通过宽带路由器进行共享上网,和单位网络保持联...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...