/ *
名前:spAll_ReturnRowsの
入力:
出力:
呼び出し:
EXECのspAll_ReturnRows' SELECT * FROMテーブル名'ページ番号、レコード数が返され、'マスターキー''ソートフィールド'
spAll_ReturnRows' ALL_CATEGORIES SELECT * FROM '2,10、' [ IDは]「」[ID]は、 「
説明:[百万]は一般的な手順は..格納ストアド・プロシージャ返しの数は、ページの指定された数を記録します
* /
CREATE PROCEDURE dbo.spAll_ReturnRows
(
@SQL NVARCHAR(4000)、
@Page int型、
@RecsPerPage int型、
@ID VARCHAR(255)、
@Sort VARCHAR(255)
)
AS
(4000)@Str NVARCHARを宣言
筋力= + CAST 'TOPをSELECT '(@RecsPerPage AS VARCHAR(20))+' * FROM(@ SET '+ @ SQL +')T T.'+@ID+' NOT INは
(@((TOP「+ CASTを選択VARCHAR(20))+ 'AS RecsPerPage *(@ページ-1))'+ @ ID +'(FROM '+ @ SQL +')BY T9のORDER '+ @ソート+')ORDER BY + @ソート'
PRINT @Str
EXEC sp_executesqlを@Str
GO
/ *
名前:spAll_DeleteNoneUnique
入力:クエリにテーブル名とフィールドリスト
出力:
呼び出し:
説明:データ表示の千万ページを達成!- 5秒以内に取得することができる1448のレコード100万のレコード、ページ1200男性はそうではありませんか?
* /
PROCEDURE GetRecordFromPage CREATE
@tblName VARCHAR(255)、 -テーブル
@fldNameのVARCHAR(255)、 -フィールド名
@PageSize INT = 10、 -ページサイズ
@PageIndex INT = 1、 - Pの
@IsCountビット= 0、 -記録された非ゼロ値の合計数を返し
、@OrderTypeビット= 0 -ソートタイプを設定し、下降中の非ゼロ値
@strWhereのVARCHAR(1000)=「」 - クエリが(注:追加しない場合)
AS
@strSQLのVARCHAR(6000)を宣言-文章は
一時変数- (100)@strTmpのvarchar型を宣言する
宣言@strOrderのVARCHAR(400) -秩序の種類
もし@OrderType!= 0を
始める
"<(選択分" @strTmp =を設定し
、 "[+ @fldName + "] DESC"順" @strOrder =設定
終了
他
始める
"(最大選択設定@strTmp =>"
設定@strOrder = "ORDER BY [" + @fldName + "] ASC"
端
@strSQL = + STR "トップを選択する"(@PageSize)+ "*から["設定
"([" + @tblName + "]ここで、[" + @fldName + "]" + @strTmp +
+ @fldName +「] )から(選択トップ"+ STR((@ pageIndexパラメータ-1)* @がPageSize)+" [」
+ @fldName + "]から[" + @tblName + "]" + @strOrder + ")")tblTmpとして
+ @strOrder
もし@strWhere!= ''
設定@strSQLは= "[から*" + + STR(@PageSize) "トップを選択し、"
[(+ @tblName + "]ここで、[" + @fldName + "]" + @strTmp +」 "
+ @fldName + "])(上選択" + STR((@ pageIndexパラメータ-1)* @がPageSize)+" [」から
+ @fldName + "] [" + @tblName + "から]ここで" + @strWhere + ""
+ @strOrder + ")tblTmpなど)と" + @strWhere + "" + @strOrder
@PageIndex = 1があれば
始める
@strTmp = ""設定
の場合@strWhere!= ''
を設定@strTmp = "ここで、" + @strWhere
@strSQLは= + "*から[" + STR(@PageSize) "トップを選択し、"設定
+ @tblName + "]" + @strTmp + "" + @strOrder
端を
@IsCount場合!= 0
"[+ @tblName + "]"からトータルとしてSELECT COUNT(*)"セット@strSQL =
EXEC(@strSQL)
GO
ます。https://www.cnblogs.com/Spring/archive/2005/09/02/228573.htmlで再現