-2

我无法运行此查询,错误可能出在哪里,因为没关系。谢谢

CREATE PROCEDURE Test
   @PageSize int,
   @PageNumber int 
AS
   SELECT 
       PK_ID, Test, Descripcion 
   FROM 
      (SELECT
           PK_ID, Test, Descripcion, 
           ROW_NUMBER() OVER (ORDER BY Test, PK_ID) AS RowNumber 
      FROM 
        Mydatabase
     ) AS Test
WHERE 
    RowNumber BETWEEN @PageSize * @PageNumber AND @PageSize * (@PageNumber)
4

2 回答 2

1

根据您的页面编号方式(从 0 或从 1 开始),您可能应该将您的WHERE子句更改为以下之一:

  1. 如果页码从 0 开始:

    WHERE RowNumber BETWEEN @PageSize * @PageNumber + 1
                        AND @PageSize * (@PageNumber + 1)
    
  2. 如果页码从 1 开始:

    WHERE RowNumber BETWEEN @PageSize * (@PageNumber - 1) + 1
                        AND @PageSize * @PageNumber
    
于 2012-04-15T23:48:17.063 回答
0

尝试将页面添加到页面范围的上限:

WHERE RowNumber BETWEEN @PageSize * @PageNumber 
AND @PageSize * (@PageNumber + 1) -- added 1 here
于 2012-04-15T23:27:22.217 回答