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