基於ROWCOUNT的分頁儲存過程

iSQlServer發表於2009-11-06

sql分頁這是個老話題了,google能一大把,有基於int 型id的巢狀分頁, 也有掐頭去尾的分頁方式,但這兩種都需要用TOP。我們都知道,在top後面用變數不是說說的事,也不好整,再說了不是所有的表id都是int行啊。所有今天自己也整了個,大家有興趣推薦去看看動易的通用分頁儲存過程。

DECLARE @tmpid varchar(50)

declare @rownum int
declare @pagesize int
declare @page int
SET @pagesize =5
SET @page = 1

IF @page >1
BEGIN
 SET @rownum = @pagesize * (@page-1)
 SET ROWCOUNT @rownum
END
 IF @page >1
   BEGIN
    SELECT @tmpid =[or_OrderID] FROM [wos_tbOrder]    ORDER BY [or_OrderID] ASC
    SET ROWCOUNT @pagesize
    SELECT
          [or_OrderID]
          ,[or_CSTNO]
          ,[or_CSTName]
          ,[or_ConsignNo]
          ,[or_TaxID]
          ,[or_BuildMan]
          ,[or_Status]
      FROM [wos_tbOrder]
   WHERE [or_OrderID] > @tmpid ORDER BY [or_OrderID] ASC
  END
ELSE
   BEGIN
    SET ROWCOUNT @pagesize
        SELECT
              [or_OrderID]
              ,[or_CSTNO]
              ,[or_CSTName]
              ,[or_ConsignNo]
              ,[or_TaxID]
              ,[or_BuildMan]
              ,[or_Status]
          FROM [wos_tbOrder] ORDER BY [or_OrderID] ASC
     END

原文地址:http://www.cnblogs.com/leeyun/archive/2009/11/05/1596744.html

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

相關文章