-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 に答える