CREATE PROCEDURE [ DBO ]を。[ Proc_SqlPageByRownumber ] ( @tbName VARCHAR(2000)、 - テーブル @tbGetFields VARCHAR(1000)= ' * '、- フィールドを返し @OrderfldName VARCHAR(255)、 - ソートフィールド名は @PageSize INT = 20である、 - ページサイズ @ pageIndexパラメータ INT = 1、 - P @OrderType 「ビット = 0、 - 0上昇、非0降順 @strWhere VARCHAR(1000年)= '' 、 - クエリ @TotalCount INT OUTPUTは - レコードの合計数を返します ) AS BEGIN DECLARE @strSql VARCHAR(5000) - 文 DECLARE @strSqlCount NVARCHAR(4000)- クエリログの総数メインステートメント DECLARE @strOrder VARCHAR(300)- ソートタイプ - ------------总记录数--------------- 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 <> 0)SET @strOrder = ' ORDER BY ' + @OrderfldName + ' DESC ' ELSE SET @strOrder = ' ORDER BY ' + @OrderfldName + ' ASC ' 印刷 3 SETを @strSql= ' SELECT *、' + CONVERT(NVARCHAR(10)、@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