1 ALTER proc [dbo].[CreatePage]
2 @thisPage int,--当前页数
3 @pageSize int,--每页多少条记录
4 @tableName varchar(100)='',--表名
5 @columns varchar(4000) = '*',--查询列名
6 @pkColumn varchar(50) = '' ,--主键
7 @condition varchar(2000)='',--条件需要加and 不需要where
8 @ascColumn varchar(100) = '', --排序的字段名 (即 order by column asc/desc)
9 @OrderType varchar(10)='asc', --排序的类型
10 @totalPageNum int output
11 as
12 begin
13 declare @sqlTotalCount nvarchar(2000)--获得总条数sqlstr
14
15 declare @sqlStr nvarchar(4000)--获得表的sqlstr
16 declare @totalCount int --总条数
17 declare @totalPage int --总页数
18 declare @startRowNum int --每页开始的行号
19 declare @endRowNum int --每页结束的行号
20
21 if @ascColumn=''
22 begin
23 set @ascColumn=@pkColumn--如果没有则 按主键排序
24 end
25
26
27 set @sqlTotalCount= 'select @count=COUNT(*) from ' + @tableName
28 exec sp_executesql @sqlTotalCount, N'@count int output' , @totalCount output
29
30 --select @totalCount --总记录数
31
32 set @totalPage=@totalCount/@pageSize --设置总页数
33 if (@totalCount % @pageSize <> 0)
34 begin
35 set @totalPage=@totalPage+1
36 end
37
38
39 set @startRowNum=(@thisPage-1)*@pageSize+1 --设置每页开始的行号
40 set @endRowNum=@thisPage*@pageSize --设置每页结束的行号
41
42
43 if @thisPage=1
44 begin
45 set @sqlStr= 'select top' + str(@pageSize) + ' ' + @columns +
46 ' from ' + @tableName + ' where 1=1 ' + @condition +
47 'order by ' + @ascColumn + ' ' + @OrderType
48
49 end
50 else
51 begin
52 set @sqlStr = 'select * from
53 (
54 select top 100 percent ' + @columns + ',
55 ROW_NUMBER() over (order by '+ @ascColumn + ' '+ @OrderType +')
56 Rowindex from '+ @tableName + ' where 1=1 '+ @condition +
57
58 ' ) T1
59 where '+
60 'Rowindex>='+STR(@startRowNum) + '
61 and Rowindex<='+STR(@endRowNum)
62
63 end
64 print @sqlStr
65
66
67 set @totalPageNum=@totalPage --总页数
68
69 exec (@sqlStr)
70
71 end
72
73
74
75
76 declare @p9 int
77 set @p9=1
78 exec CreatePage @thisPage=1,
79 @pageSize=10,@tableName=N'PE_MultiLevelComment',
80 @columns=N'Id',@pkColumn=N'Id',@condition=N'',
81 @ascColumn=N'',@OrderType=N'',@totalPageNum =@p9 output
82 select @p9