网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > 数据库 > 正文

分享一个分页存储过程和分页函数

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

分页存储过程

  1. Create PROCEDURE [dbo].[GetRecordWithPage] 
  2. @fieldsType nvarchar(1000),   --字段列表(带类型),用于@t表变量的字段声明,如:PhotoID int,UserID int,PhotoTitle nvarchar(50) 
  3. @fieldsList nvarchar(500),    --字段列表(不带类型),用于分页部分读取@t表变量的字段,也可使用*代替,但性能会下降,如:PhotoID ,UserID ,PhotoTitle 
  4. @selectSrting nvarchar(2000), --向@t表变量中读取记录的Select语句 
  5. @resultOrderBy nvarchar(200), --对分页结果进行排序的字段,如:升序'PhotoID ASC'、降序'PhotoID DESC',注意:如果是降序的话要在selectSrting和此处都加DESC 
  6. @pageSize INT,                --页尺寸,0表示返回所有行 
  7. @currentPage INT,             --当前页,首页为1 
  8. @RecordCount INT OUTPUT       --非0值则返回记录总数 
  9. AS 
  10. BEGIN 
  11.     DECLARE @strSql varchar(4000) 
  12.     declare @sql nvarchar(1000) 
  13.     SET @strSql = 'DECLARE @t TABLE(' +@fieldsType+ ');' 
  14.     SET @strSql = @strSql + 'INSERT INTO @t '+@selectSrting+ ';' 
  15.     set @sql = @strSql + 'select @aa=count(*) from @t;'  
  16.     exec sp_executesql @sql,N'@aa int output',@RecordCount OUTPUT
  17.     IF @pageSize=0 
  18.         SET @strSql=@strSql+'SELECT '+@fieldsList+' FROM @t;' 
  19.     ELSE 
  20.         IF @currentPage=1 
  21.             SET @strSql=@strSql+'select TOP('+STR(@pageSize)+')'+@fieldsList+' FROM @t;' 
  22.         ELSE 
  23.             BEGIN 
  24.                 SET @strSql =@strSql+'SELECT TOP('+Str(@pageSize)+')'+ @fieldsList+'FROM (SELECT TOP('+Str(@pageSize * @currentPage)+')'+@fieldsList+' , ROW_NUMBER() OVER (ORDER BY '+@resultOrderBy+')' 
  25.                 SET @strSql =@strSql+' AS RowNumber FROM @t' 
  26.                 SET @strSql =@strSql+') AS r WHERE r.RowNumber >' + Str(@pageSize * (@currentPage - 1))+';' 
  27.             END 
  28.     EXEC(@strSql) 
  29. END 

分页函数:

  1. Create Function [dbo].[F_ConformationPage] 
  2. (   
  3. @pageNum int--页码 
  4. @pageSize int,--页面大小 
  5. @orderExpression nvarchar(50),--排序表达式如:'ID DESC' 
  6. @oldSql nvarchar(max--待分页的sql语句 
  7. )  
  8. RETURNS  Nvarchar(max)  --待分页sql语句 
  9.  AS        
  10. begin 
  11.  declare @newSql Nvarchar(max)   
  12. set @newSql='' 
  13.  
  14. declare @beginPage as  nvarchar(100) --开始数字 
  15. set    @beginPage=(@pageNum*@pageSize)-(@pageSize-1) 
  16. declare  @endPage nvarchar(100) 
  17. set @endPage=@beginPage+@pageSize-1 
  18. set @newSql='select * from ( 
  19. SELECT Row_Number( ) over( ORDER BY '+ @orderExpression +'as rowNum,* from ('+@oldSql+'as aa) as yy 
  20. where rowNum BETWEEN '+ @beginPage+' and '+@endPage+' order by '+ @orderExpression 
  21.  
  22. return  @newSql 
  23. end 
  • 下一篇资讯: sql字符串操作
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师