SQLServer分页存储过程收集

系统 2289 0

SQL Server2000分页存储过程

  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

==================================================================

SQLServer分页存储过程收集


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论