基于ROWCOUNT的分页存储过程

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

posted on 2009-11-05 16:04  persialee  阅读(385)  评论(1)    收藏  举报

导航