当前位置:Gxlcms > mssql > 实现SQL分页的存储过程代码

实现SQL分页的存储过程代码

时间:2021-07-01 10:21:17 帮助过:29人阅读

SQL分页的存储过程代码,需要的朋友们直接拿去用,使用非常简单。

分享代码如下

  1. USE [SendMessage]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[pages] Script Date: 07/09/2015 13:46:50 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER PROC [dbo].[pages]
  9. (
  10. @tbname nvarchar(100), --要分页显示的表名
  11. @FieldKey nvarchar(1000), --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段
  12. @PageCurrent int=1, --要显示的页码
  13. @PageSize int=10, --每页的大小(记录数)
  14. @FieldShow nvarchar(1000)='', --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段
  15. @FieldOrder nvarchar(1000)='', --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC
  16. @WhereString nvarchar(1000)=N'' --查询条件
  17. )
  18. AS
  19. begin
  20. IF ISNULL(@FieldKey,N'')=''
  21. BEGIN
  22. RAISERROR(N'分页处理需要主键(或者惟一键)',1,16)
  23. RETURN
  24. END
  25. IF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1
  26. IF ISNULL(@PageSize,0)<1 SET @PageSize=10
  27. IF ISNULL(@FieldShow,N'')=N'' SET @FieldShow=N'*'
  28. IF ISNULL(@FieldOrder,N'')=N''
  29. SET @FieldOrder=N''
  30. ELSE
  31. SET @FieldOrder=N'ORDER BY '+LTRIM(@FieldOrder)
  32. IF ISNULL(@WhereString,N'')=N''
  33. SET @WhereString=N''
  34. ELSE
  35. SET @WhereString=N'WHERE '+@WhereString+N''
  36. --计算分页显示的TOPN值
  37. DECLARE @TopN varchar(20),@StartRecord varchar(20),@EndRecord varchar(20)
  38. SELECT @TopN=@PageSize,
  39. @StartRecord=(@PageCurrent-1)*@PageSize+1,
  40. @EndRecord=(@PageCurrent-1)*@PageSize+@PageSize
  41. --第一页直接显示
  42. IF @PageCurrent=1
  43. EXEC(N'SELECT TOP '+@TopN
  44. +N' '+@FieldShow
  45. +N' FROM '+@tbname
  46. +N' '+@WhereString
  47. +N' '+@FieldOrder)
  48. ELSE
  49. EXEC(N'with temptbl as(
  50. select ROW_NUMBER() Over('+@FieldOrder+') as row, '+@FieldKey+' from '+@tbname+N' '+@WhereString+')
  51. select '+@FieldShow+' from (select B.* from (select '+@FieldKey+' from temptbl where row between '+@StartRecord+' and '+@EndRecord+')A left join '+@tbname+' B on A.'+@FieldKey+'=B.'+@FieldKey+')C')
  52. END

以上就是本文的全部内容,希望对大家的学习有所帮助。

您可能感兴趣的文章:

  • sql2005 存储过程分页代码
  • sqlserver 千万数量级分页存储过程代码
  • sql 存储过程分页代码 支持亿万庞大数据量
  • SQL Server 2005通用分页存储过程及多表联接应用
  • mssql 高效的分页存储过程分享
  • 基于Sql Server通用分页存储过程的解决方法
  • 深入sql server 2005 万能分页存储过程的详解
  • SQL Server 分页查询通用存储过程(只做分页查询用)
  • SQL Server两种分页的存储过程使用介绍
  • SqlServer 2000、2005分页存储过程整理

人气教程排行