SQL Server 2005快速Web分頁的實現

iSQlServer發表於2009-02-01
什麼是分頁?

  分頁,就是按照某種規則顯示分組資料集,但是在SQL Server中,分頁並不是十分容易就能夠實現。在過去,開發人員通常需要自己編寫程式,使用臨時表格來實現分頁功能,或者將所有的資料結果集返回到客戶端,在客戶端進行分頁操作。從開發人員或者DBA的角度來看,兩種方法都不能令人滿意。

  隨著SQL Server的釋出,其中的一些排序函式使得開發人員編寫資料分頁程式變得更加簡單和高效。這些新的排序函式提供了統計資料集的數目,對資料集歸類,按照某種標準對資料集排序等功能。在這篇文章中,我將著重介紹新增加的ROW-NUMBER排序函式,它會根據你指定的分類標準將結果資料集進行分類,同時給資料集分配連續的頁面。

  一個分頁的例項

  我總是喜歡通過例子來介紹如何使用新技術,所以讓我們來看看如何設計一個儲存程式,使用ROW_NUMBER這一新函式來實現資料的自動分頁。

  首先,需要定義一些資料結構。我們定義一個SalesHistory表格,它包含的資料是我們在網上售出產品的銷售記錄。包括一些常見的銷售資訊,例如,所售產品、售出日期、產品售出價格等。下面的指令碼就是建立這樣的一個表格:

以下為引用的內容:

IF OBJECT_ID('SalesHistory','U') > 0
      DROP TABLE SalesHistory

CREATE TABLE SalesHistory
(     
      SaleID INT IDENTITY(1,1),     
      Product VARCHAR(30),      
      SaleDate SMALLDATETIME,      
      SalePrice MONEY

)

  執行列表A中的指令碼則在上面建立的SalesHistory表中新增一些例子資料。

以下為引用的內容:

DECLARE @i SMALLINT
SET @i = 1

WHILE (@i <=100)
BEGIN     
      INSERT INTO SalesHistory     
      (Product, SaleDate, SalePrice)     
      VALUES     
('Computer', DATEADD(mm, @i, '3/11/1919'),
 DATEPART(ms, GETDATE()) + (@i + 57) )

      INSERT INTO SalesHistory     
      (Product, SaleDate, SalePrice)     
      VALUES     
('BigScreen', DATEADD(mm, @i, '3/11/1927'),
 DATEPART(ms, GETDATE()) + (@i + 13) )
     
      INSERT INTO SalesHistory     
      (Product, SaleDate, SalePrice)     
      VALUES     
('PoolTable', DATEADD(mm, @i, '3/11/1908'),
DATEPART(ms, GETDATE()) + (@i + 29) )
     
      SET @i = @i + 1
END

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-544962/,如需轉載,請註明出處,否則將追究法律責任。

相關文章