编写存储过程分页(此处使用T-SQL)

 1 CREATE PROC [dbo].[Common_PageList]
 2 (
 3 @tab nvarchar(max),---表名
 4 @strFld nvarchar(max), --字段字符串
 5 @strWhere varchar(max), --where条件 
 6 @PageIndex int, --页码
 7 @PageSize int, --每页容纳的记录数
 8 @Sort VARCHAR(255), --排序字段及规则,不用加order by
 9 @IsGetCount bit  --是否得到记录总数,1为得到记录总数,0为不得到记录总数,返回记录集
10 )
11 AS
12 declare @strSql nvarchar(max)
13 set nocount on;
14 if(@IsGetCount = 1)
15 begin
16  set @strSql='SELECT COUNT(0) FROM ' + @tab + ' WHERE ' + @strWhere
17 end
18 else
19 begin
20   set @strSql=' SELECT * FROM (SELECT ROW_NUMBER() 
21   OVER(ORDER BY ' + @Sort + ') AS rownum, ' + @strFld + ' FROM ' + @tab + ' where ' + @strWhere + ') AS Dwhere
22   WHERE rownum BETWEEN ' + CAST(((@PageIndex-1)*@PageSize + 1) as nvarchar(20)) + ' and ' + cast((@PageIndex*@PageSize) as nvarchar(20))
23 end
24 
25 print @strSql
26 exec (@strSql)
27 
28 set nocount off;
分页存储过程

相关文章: