微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlserver分页

 

 
 
  1. EXEC UP_SplitPages 'select RID,user_id,user_name,balance,user_state,
  2. CONVERT(varchar(30),reg_time,11)+'' ''+CONVERT(varchar(30),8) as reg_time,CONVERT(varchar(30),paid_time,8) as paid_time,pay_type,user_grade,num_type,num_grade,numrent_type,agent_no,pause_time,8) as pause_time from VIEW_UserInfo with (nolock) where 1=1','reg_time DESC',1 ,100, 0  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10. CREATE  PROCEDURE UP_SplitPages 
  11.     @sqlQuery NVARCHAR(4000), --查询字符串 
  12.     @OrderFieldName  VARCHAR(100),  --按该列为关键字来进行排序分页 
  13.     @CurrentPage INT,--第N页 (如果是 0  则读取 最后 一页的记录  ) 
  14.     @PageSize INT,--每页行数 
  15.     @OrderType   INT      
  16.  
  17. AS 
  18.  
  19. DECLARE @sql NVARCHAR(4000) 
  20. DECLARE @tPageCount INT 
  21.  
  22. IF len(@OrderFieldName)>3 
  23.     SET @sql= @sqlQuery + '  ORDER BY  '+@OrderFieldName 
  24. ELSE 
  25.              SET @sql= @sqlQuery 
  26.      
  27.  
  28. BEGIN 
  29.     SET NOCOUNT ON 
  30.     
  31.     DECLARE @P1 INT--P1是游标的id 
  32.     DECLARE @rowcount INT 
  33.  
  34.             
  35.  
  36.      
  37.     EXEC sp_cursoropen @P1 OUTPUT,@sql,@scrollopt=1,@ccopt=1,@rowcount=@rowcount OUTPUT 
  38.  
  39.             SELECT  @rowcount AS RowsCount,@CurrentPage AS CurrentPage   
  40.  
  41.     SET  @tPageCount = CEILING(1.0*@rowcount/@PageSize) 
  42.  
  43.     IF @CurrentPage = 0  
  44.         SET  @CurrentPage = @tPageCount-- @PageIndex = 0 表示在调用时,是首次查询,先读取 最后 一页的记录   
  45.  
  46.     SET @CurrentPage=(@CurrentPage-1)*@PageSize+1 
  47.  
  48.  
  49.     EXEC sp_cursorfetch @P1,16,@CurrentPage,@PageSize  
  50.     EXEC sp_cursorclose @P1 
  51.  
  52.     --SELECT  @tPageCount AS PagesCount ,@rowcount AS RowsCount,@CurrentPage AS CurrentPage   
  53.         SET NOCOUNT OFF 
  54. END 
  55.  
  56. GO 
@H_502_422@

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐