OK、SQL Server データベースにコメントを格納するテーブルがあります。データ リストの [戻る]、[次へ]、ページ番号、[最後] ボタンを使用して、レコードをページングできるようにしたいと考えています。最も効率的な方法は、特定の範囲内の特定の数の行のみを返すストアド プロシージャを使用することだと考えました。これが私が思いついたものです
@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
これですべて正常に動作し、データ リスト ページャーに [次へ] ボタンと [戻る] ボタンを実装できました。ここで、ページ番号と [Last] ボタンをページャーに実装できるように、(現在のページではなく) すべてのコメントの合計数が必要です。つまり、最初の select ステートメントで合計行数を返したい
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.* も機能しません。
行の合計量を取得する別の方法はありますか、それとも私のアプローチは運命づけられていますか?