SQLServerのクエリページングストアドプロシージャ

CREATE  PROCEDURE   [ DBO ]を[ Proc_SqlPageByRownumber ]
    @tbName  VARCHAR2000)、             - テーブル
    @tbGetFields  VARCHAR1000=  ' * '- フィールドを返し
    @OrderfldName  VARCHAR255)、         - ソートフィールド名は
    @PageSize  INT = 20である- ページサイズ
    @ pageIndexパラメータ INT = 1- P 
    @OrderType  「ビット =  0- 0上昇、非0降順
    @strWhere  VARCHAR1000年= '' - クエリ
    @TotalCount  INT OUTPUTは             - レコードの合計数を返します
AS 
BEGIN 
    DECLARE  @strSql  VARCHAR5000- 
    DECLARE  @strSqlCount  NVARCHAR4000- クエリログの総数メインステートメント
    DECLARE  @strOrder  VARCHAR300- ソートタイプ

    - ------------总记录数--------------- 
    IF  ISNULL@strWhere'' <> ''  
         SET  @strSqlCount = ' 選択@ TotalCout = COUNT(*)から   '  +  @tbName  +  ' 1 = 1 ' +  @strWhere 
    ELSE  SET  @strSqlCount = ' TotalCout @セレクト= COUNT(*)から    +  @tbName 
    印刷 1 
    幹部 sp_executesqlを@strSqlCount、Nを' @TotalCout INT出力'@TotalCount 出力
     - ------------分页------------ 
    IF  @PageIndex  <=  0  SET  @PageIndex  =  1つの
印刷 2 
    IF@OrderType <> 0SET  @strOrder = ' ORDER BY ' + @OrderfldName + ' DESC ' 
    ELSE  SET  @strOrder = ' ORDER BY ' + @OrderfldName + ' ASC ' 
印刷 3 
    SETを @strSql= ' SELECT *、' + CONVERTNVARCHAR10)、@TotalCount+ ' としてトータルカウント' + ' FROM
    (SELECT ROW_NUMBER()OVER(' + @strOrder + ' )ROWNO、' +  @tbGetFields + ' FROM '  +  @tbName  +  ' = 1 '  +  @strWhere + ' )TB
    tb.RowNo BETWEEN ' + STR((@PageIndex - 1* @PageSize + 1+ ' "  + STR@PageIndex * @PageSize 印刷 @strSql 
    のexec@strSql END

GO

 

おすすめ

転載: www.cnblogs.com/zldqpm/p/11911964.html