ユニバーサルページングストアドプロシージャ(SQL Serverの)ユニバーサルページングストアドプロシージャ

ユニバーサルページングストアドプロシージャ

(NAME = 'Proc_Pagination' とタイプ= 'P' のsysobjectsから名前を選択する)が存在する場合

proc Proc_Paginationをドロップ

行きます

PROCEDURE Proc_Paginationを作成します。

    @tblNameのVARCHAR(255)、 - 表名

    @strGetFields VARCHAR(1000)= '*'、 - 列に戻る必要があります

    @fldNameのVARCHAR(255)= ''、 - フィールド名をソート

    @PageSize int型= 10、 - ページサイズ

    @PageIndex int型= 1、 - P

    @doCountビット= 0、 - レコードの合計数は、ゼロ以外の値を返さ

    @OrderTypeビット= 0、 - 降順で、非ゼロ値をソートの種類を設定

    @strWhereのVARCHAR(1500)= '' - クエリ条件(注:追加しないでください)

なので

 

主な声明 - @strSQL VARCHAR(5000)を宣言

宣言@strTmpのVARCHAR(110) - 一時変数

発注の種類 - @strOrder VARCHAR(400)を宣言

@doCount場合!= 0

    ベギン

        @strWhereもし!= ''

            '[+ @tblName + ']ここで、' + @ strWhereから合計としてSELECT COUNT(*)' @strSQL =を設定

        他

            '[+ @tblName + ']' から合計としてSELECT COUNT(*)' @strSQL =を設定

    終わり

    - 上記のコードは@doCountが渡さ場合に統計的凝集の実装に、ゼロではないことを意味します。次のコードはすべて@doCountが0であります

 

    ベギン

        @OrderType場合!= 0

            ベギン

                @strTmp = '<(選択分' を設定します

                '[+ @fldName + '] DESC' 順' @strOrder =を設定します

                - @OrderTypeない0場合は、降順の実装に、文章が非常に重要です!

            終わり

       

        他

            ベギン

                '(最大選択>' @strTmp =を設定

                '[+ @fldName + '] ASC' 順' @strOrder =を設定します

            終わり

            @PageIndex = 1の場合

                ベギン

                    @strWhereもし!= ''

                        @strSQLを設定= [ '+ @tblName + ']' + @strWhere + '' + @strOrderから+ STR(@PageSize)+' '+ @ strGetFields +' 'トップを選択'

                    他

                        @strSQLを設定= '+ @strOrder [ '+ @tblName +']から+ STR(@PageSize)+' '+ @ strGetFields +' 'トップを選択'

                        - 上記のコードの実装上の最初のページならば、それは実行を高速化します

                終わり

            他

                ベギン

                    - 次のコードは、実際にSQLコードを実行するために@strSQLを与えます

                    '[から '+ + @ strGetFields' @strSQL = 'を選択トップ' + STR(@PageSize)+' を設定

                        + @tblName + ']ここで、[' + @fldName + ']' + @strTmp + '([' + @fldName + '])から(選択トップ' + STR((@ pageIndexパラメータ-1)* @がPageSize)+ '[' + @fldName + ']から[' + @tblName + ']' + @strOrder + ')tblTmpなど)' + @strOrder

                        @strWhereもし!= ''

                    '[から '+ + @ strGetFields' @strSQL = 'を選択トップ' + STR(@PageSize)+' を設定

                        + @tblName + '] [' + @fldName + ']' + @strTmp + '(['

                        + @fldName + ']()を選択し、上から' + STR((@ pageIndexパラメータ-1)* @がPageSize)+ '['

                        + @fldName + ']から[' + @tblName + ']ここで、' + @strWhere + ''

                        + @strOrder + ')tblTmp)および' + @strWhere + '' + @strOrder

                            終わり

       終わり

EXEC(@strSQL)

GO

(NAME = 'Proc_Pagination' とタイプ= 'P' のsysobjectsから名前を選択する)が存在する場合

proc Proc_Paginationをドロップ

行きます

PROCEDURE Proc_Paginationを作成します。

    @tblNameのVARCHAR(255)、 - 表名

    @strGetFields VARCHAR(1000)= '*'、 - 列に戻る必要があります

    @fldNameのVARCHAR(255)= ''、 - フィールド名をソート

    @PageSize int型= 10、 - ページサイズ

    @PageIndex int型= 1、 - P

    @doCountビット= 0、 - レコードの合計数は、ゼロ以外の値を返さ

    @OrderTypeビット= 0、 - 降順で、非ゼロ値をソートの種類を設定

    @strWhereのVARCHAR(1500)= '' - クエリ条件(注:追加しないでください)

なので

 

主な声明 - @strSQL VARCHAR(5000)を宣言

宣言@strTmpのVARCHAR(110) - 一時変数

発注の種類 - @strOrder VARCHAR(400)を宣言

@doCount場合!= 0

    ベギン

        @strWhereもし!= ''

            '[+ @tblName + ']ここで、' + @ strWhereから合計としてSELECT COUNT(*)' @strSQL =を設定

        他

            '[+ @tblName + ']' から合計としてSELECT COUNT(*)' @strSQL =を設定

    終わり

    - 上記のコードは@doCountが渡さ場合に統計的凝集の実装に、ゼロではないことを意味します。次のコードはすべて@doCountが0であります

 

    ベギン

        @OrderType場合!= 0

            ベギン

                @strTmp = '<(選択分' を設定します

                '[+ @fldName + '] DESC' 順' @strOrder =を設定します

                - @OrderTypeない0場合は、降順の実装に、文章が非常に重要です!

            終わり

       

        他

            ベギン

                '(最大選択>' @strTmp =を設定

                '[+ @fldName + '] ASC' 順' @strOrder =を設定します

            終わり

            @PageIndex = 1の場合

                ベギン

                    @strWhereもし!= ''

                        @strSQLを設定= [ '+ @tblName + ']' + @strWhere + '' + @strOrderから+ STR(@PageSize)+' '+ @ strGetFields +' 'トップを選択'

                    他

                        @strSQLを設定= '+ @strOrder [ '+ @tblName +']から+ STR(@PageSize)+' '+ @ strGetFields +' 'トップを選択'

                        - 上記のコードの実装上の最初のページならば、それは実行を高速化します

                終わり

            他

                ベギン

                    - 次のコードは、実際にSQLコードを実行するために@strSQLを与えます

                    '[から '+ + @ strGetFields' @strSQL = 'を選択トップ' + STR(@PageSize)+' を設定

                        + @tblName + ']ここで、[' + @fldName + ']' + @strTmp + '([' + @fldName + '])から(選択トップ' + STR((@ pageIndexパラメータ-1)* @がPageSize)+ '[' + @fldName + ']から[' + @tblName + ']' + @strOrder + ')tblTmpなど)' + @strOrder

                        @strWhereもし!= ''

                    '[から '+ + @ strGetFields' @strSQL = 'を選択トップ' + STR(@PageSize)+' を設定

                        + @tblName + '] [' + @fldName + ']' + @strTmp + '(['

                        + @fldName + ']()を選択し、上から' + STR((@ pageIndexパラメータ-1)* @がPageSize)+ '['

                        + @fldName + ']から[' + @tblName + ']ここで、' + @strWhere + ''

                        + @strOrder + ')tblTmp)および' + @strWhere + '' + @strOrder

                            終わり

       終わり

EXEC(@strSQL)

GO

おすすめ

転載: www.cnblogs.com/zunzunQ/p/11577968.html