实现的通用分页存储过程的三种方法.pdfVIP

实现的通用分页存储过程的三种方法.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实现的通用分页存储过程的三种方法

TOP n 实现的通用分页存储过程 /*转自邹建*/ CREATE PROC sp_PageView @tbname sysname, --要分页显示的表名 @FieldKey nvarchar(1000), --用于定位记录的主键(唯一性)字段,可以是 逗号分隔的多个字段 @PageCurrent int=1, --要显示的页码 @PageSize int=10, --每页的大小(记录数) @FieldShow nvarchar(1000)=, --以逗号分隔的要显示的字段列表,如果 不指定,则显示所有字段 @FieldOrder nvarchar(1000)=, --以逗号分隔的排序字段列表,可以指定 在字段后面指定DESC/ASC ,用于指定排序顺序 @Where nvarchar(1000)=, --查询条件 @PageCount int OUTPUT --总页数 AS SET NOCOUNT ON --检查对象是否有效 IF OBJECT_ID(@tbname) IS NULL BEGIN RAISERROR(N对象%s不存在,16,1,@tbname) RETURN END IF OBJECTPROPERTY(OBJECT_ID(@tbname),NIsTable)=0 AND OBJECTPROPERTY(OBJECT_ID(@tbname),NIsView)=0 AND OBJECTPROPERTY(OBJECT_ID(@tbname),NIsTableFunction)=0 BEGIN RAISERROR(N%s不是表、视图或者表值函数,16,1,@tbname) RETURN END --分页字段检查 IF ISNULL(@FieldKey,N)= BEGIN RAISERROR(N分页处理需要主键(或者唯一键),16,1) RETURN END --其他参数检查及规范 IF ISNULL(@PageCurrent,0)1 SET @PageCurrent=1 IF ISNULL(@PageSize,0)1 SET @PageSize=10 IF ISNULL(@FieldShow,N)=N SET @FieldShow=N* IF ISNULL(@FieldOrder,N)=N SET @FieldOrder=N ELSE SET @FieldOrder=NORDER BY +LTRIM(@FieldOrder) IF ISNULL(@Where,N)=N SET @Where=N ELSE SET @Where=NWHERE (+@Where+N) --如果@PageCount 为NULL 值,则计算总页数(这样设计可以只在第一次计算 总页数,以后调用时,把总页数传回给存储过程, --避免再次计算总页数,对于不想计算总页数的处理而言,可以给@PageCount 赋值) IF @PageCount IS NULL BEGIN DECLARE @sql nvarchar(4000) SET @sql=NSELECT @PageCount=COUNT(*) +N FROM +@tbname +N +@Where EXEC sp_executesql @sql,N@PageCount int OUTPUT,@PageCount OUTPUT SET @PageCount=(@PageCount+@PageSize-1)/@PageSize END --计算分页显示的TOPN 值 DECLARE @TopN varchar(20),@TopN1 varchar(20) SELECT @TopN=@PageSize,@TopN1=(@PageCurrent-1)*@PageSize --第一页直接显示 IF @PageCurrent=1 EXEC(NSELECT TOP +@TopN +N +@FieldShow +N FROM +@tbname +N +@Where +N +@FieldOrder) ELSE BEGIN --处理别名

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档