网站大量收购闲置独家精品文档,联系QQ:2885784924

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

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实现的通用分页存储过程的三种方法

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精品文档

相关文档