.NET海量分頁數據存儲過程二

 存儲過程2

 

  1. CREATE PROCEDURE [dbo].[GetRecordFromPage]   
  2.     @SelectList            VARCHAR(2000),    --欲選擇字段列表  
  3.     @TableSource        VARCHAR(100),    --表名或視圖表   
  4.     @SearchCondition    VARCHAR(2000),    --查詢條件  
  5.     @OrderExpression    VARCHAR(1000),    --排序表達式  
  6.     @PageIndex            INT = 1,        --頁號,從0開始  
  7.     @PageSize            INT = 10        --頁尺寸  
  8. AS   
  9. BEGIN 
  10.     IF @SelectList IS NULL OR LTRIM(RTRIM(@SelectList)) = '' 
  11.     BEGIN 
  12.         SET @SelectList = '*' 
  13.     END 
  14.     PRINT @SelectList  
  15.       
  16.     SET @SearchCondition = ISNULL(@SearchCondition,'')  
  17.     SET @SearchCondition = LTRIM(RTRIM(@SearchCondition))  
  18.     IF @SearchCondition <> '' 
  19.     BEGIN 
  20.         IF UPPER(SUBSTRING(@SearchCondition,1,5)) <> 'WHERE' 
  21.         BEGIN 
  22.             SET @SearchCondition = 'WHERE ' + @SearchCondition  
  23.         END 
  24.     END 
  25.     PRINT @SearchCondition  
  26.  
  27.     SET @OrderExpression = ISNULL(@OrderExpression,'')  
  28.     SET @OrderExpression = LTRIM(RTRIM(@OrderExpression))  
  29.     IF @OrderExpression <> '' 
  30.     BEGIN 
  31.         IF UPPER(SUBSTRING(@OrderExpression,1,5)) <> 'WHERE' 
  32.         BEGIN 
  33.             SET @OrderExpression = 'ORDER BY ' + @OrderExpression  
  34.         END 
  35.     END 
  36.     PRINT @OrderExpression  
  37.  
  38.     IF @PageIndex IS NULL OR @PageIndex < 1  
  39.     BEGIN 
  40.         SET @PageIndex = 1  
  41.     END 
  42.     PRINT @PageIndex  
  43.     IF @PageSize IS NULL OR @PageSize < 1  
  44.     BEGIN 
  45.         SET @PageSize = 10  
  46.     END 
  47.     PRINT  @PageSize  
  48.  
  49.     DECLARE @SqlQuery VARCHAR(4000)  
  50.  
  51.     SET @SqlQuery='SELECT '+@SelectList+',RowNumber   
  52.     FROM   
  53.         (SELECT ' + @SelectList + ',ROW_NUMBER() OVER( '+ @OrderExpression +'AS RowNumber   
  54.           FROM '+@TableSource+' '+ @SearchCondition +'AS RowNumberTableSource   
  55.     WHERE RowNumber BETWEEN ' + CAST(((@PageIndex - 1)* @PageSize+1) AS VARCHAR)   
  56.     + ' AND ' +   
  57.     CAST((@PageIndex * @PageSize) AS VARCHAR)   
  58. --    ORDER BY ' + @OrderExpression  
  59.     PRINT @SqlQuery  
  60.     SET NOCOUNT ON 
  61.     EXECUTE(@SqlQuery)  
  62.     SET NOCOUNT OFF 
  63.    
  64.     RETURN @@RowCount  
  65. END 

 

原文鏈接:http://www.cnblogs.com/wdy6279/archive/2011/04/29/2032448.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章