SQLServer分頁預存程序收集

來源:互聯網
上載者:User

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.