2017-04-06 5 views
1

@skipおよび@takeパラメータを使用してページングしています。私はページングをした後、合計行数が必要です。どのように私はパフォーマンスの最善の方法としてこれを行うことができますか?ページングを適用した後の合計行数を取得する方法

CREATE PROCEDURE Search 
    @Take  Int   = 10 
    @Skip  Int   = 0 
    @TotalRows Int Out 
AS 

    BEGIN 
    Select 
        RowNo, FirstName, LastName 
       From 
        (
         Select Row_Number()Over(Order By Id) As [RowNo], 
          FirstName, 
          LastName  
         From Users     
        ) tblTemp 
       Where RowNo > @Skip And RowNo <= @Take + @Skip 

       Set @TotalRows = ??? -- I need the number of total rows after applying paging. How can I do this? 
    END 
+0

DBMSには、たとえばMySQL、SQL-Server、Oracle –

+1

@SteveLovellのようにタグを付けてください。私はそのタグを編集した。 –

答えて

0

あなたはあなたが好きなPROCを呼び出すことができます@@ROWCOUNT

手順

CREATE PROCEDURE Search 
    @Take  Int   = 10, 
    @Skip  Int   = 0, 
    @TotalRows Int Out 
AS 
BEGIN 
    Select 
     RowNo, 
     FirstName, 
     LastName 
    From (
     Select 
      Row_Number()Over(Order By Id) As [RowNo], 
      FirstName, 
      LastName  
     From Users     
    ) tblTemp 
    Where RowNo > @Skip And RowNo <= @Take + @Skip 

    Set @TotalRows = @@ROWCOUNT 
END 

を使用することができます。

declare @total_rows int; 
exec search 10, 0, @total_rows output 
select @total_rows 
+0

私はあなたが前に言ったことをしました、そして、常に@TotalRowsは10です。あなたの答えは正しくありません。 –

+0

'@total_rows output'は、プロシージャ内で変数を使用した方法ですか?手続き検索をどう呼びましたか>> – Praveen

関連する問題