好的,我的 SQL Server 数据库中有一个存储评论的表。我的愿望是能够使用我的数据列表中的 [Back]、[Next]、页码和 [Last] 按钮对记录进行分页。我认为最有效的方法是使用只返回特定范围内一定数量行的存储过程。这是我想出的
@PageIndex INT,
@PageSize INT,
@postid int
AS
SET NOCOUNT ON
begin
WITH tmp AS (
SELECT comments.*, ROW_NUMBER() OVER (ORDER BY dateposted ASC) AS Row
FROM comments
WHERE (comments.postid = @postid))
SELECT tmp.*
FROM tmp
WHERE Row between
(@PageIndex - 1) * @PageSize + 1 and @PageIndex*@PageSize
end
RETURN
现在一切正常,我已经能够在我的数据列表寻呼机中实现 [Next] 和 [Back] 按钮。现在我需要所有评论的总数(不在当前页面中),以便我可以实现我的页码和寻呼机上的[Last] 按钮。换句话说,我想在我的第一个选择语句中返回总行数,即
WITH tmp AS (
SELECT comments.*, ROW_NUMBER() OVER (ORDER BY dateposted ASC) AS Row
FROM comments
WHERE (comments.postid = @postid))
set @TotalRows = @@rowcount
@@rowcount 不起作用并引发错误。我也不能让 count.* 工作。
有没有另一种方法来获得总行数,或者我的方法注定要失败。