ユニバーサルページングストアドプロシージャ
(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