一直在努力

坚持,坚持,再坚持 我一直在努力

导航

sqlserver 数据库分页

回头来开发asp.net程序,难免会遇到数据库分页的问题,回忆一下以前用过的一个 感觉还是这个比较容易理解;
条件:表中要有一个字段可以进行排序
大概思路:
根据传入的信息 计算出当前也的起始行,
获取起始行的排序字段值
根据这个值和查询条件 获取当前页的数据

CREATE PROCEDURE 存储过程名称
(
   @查询条件
   @intPageNo       INT,                 ----当前的页码
   @intRecordOfPage INT,                 ----每页的记录数
   @intRecordNumber INT OUTPUT           ----记录总数
)
AS
   DECLARE @intTop      INT
   DECLARE @排序依据字段   
   ----获得记录总数
   SELECT @intRecordNumber = COUNT(*)
     FROM Table
    WHERE 条件                 
   ----如果结果集不为空
   IF @intRecordNumber > 0
   BEGIN
   ----修正输出的起始行号
      IF (@intRecordOfPage * @intPageNo > @intRecordNumber)
          SET @intTop = @intRecordOfPage * (CEILING(@intRecordNumber * 1.0 / @intRecordOfPage) - 1) + 1
      ELSE
          SET @intTop = (@intRecordOfPage * (@intPageNo - 1)) + 1
   END
  
  ----设置输出行数
   SET ROWCOUNT @intTop
      
  ----计算起始行依据
   SELECT @排序依据字段 = 排序字段
   FROM TABLE
   WHERE 条件
   ORDER BY 排序字段
    
  ----设置最终输出行数
   SET ROWCOUNT @intRecordOfPage
   
   SELECT 输出数据
   FROM table
    WHERE 排序字段 >= @排序依据字段  and 查询条件
  ORDER BY 排序
GO

posted on 2008-02-24 20:21  朱竹  阅读(486)  评论(0编辑  收藏  举报