sql2005 存储过程分页代码


  本文标签:sql2005,存储过程,分页

复制代码 代码如下:

create database Test
on primary ( name=Test_Data.mdf,
filename=D:\我的资料\sql\备份\Test_Data.mdf
)
log on
(
name=Test_Data.ldf,
filename=D:\我的资料\sql\备份\Test_Data.ldf
)

if object_id(tb) is not null drop table tb
create table tb
(
Col int
)
insert into tb select top 50 number from master..spt_values where type=P and number>0

create proc SplitPage
(
@TableName nvarchar(50),
@PageSize int,--每页显示的数量
@CurrentPage int,--当前第几页
@PageCol nvarchar(50),--排序字段
@OrderNo nvarchar(50)--排序方式(DESC,ASC)
)
as
/*
测试用的
declare @PageCol nvarchar(50)
declare @TableName nvarchar(50)
declare @OrderNo nvarchar(50)
declare @PageSize int
declare @CurrentPage int
set @PageCol=Col
set @TableName=tb
set @OrderNo=DESC
set @PageSize=10
set @CurrentPage=4
*/
declare @sql nvarchar(1000)
set @sql=
set @sql=
;with hgo as
(
select *,row_number() over(
order by +@PageCol+ +@OrderNo+) rank
from +@TableName+
)
set @sql=@sql+select Col from hgo where rank between +ltrim((@CurrentPage-1)*@PageSize+1)+ and +ltrim(@CurrentPage*@PageSize)
--print @sql
exec (@sql)

exec SplitPage tb,10,1,Col,DESC

Col
-----------
50
49
48
47
46
45
44
43
42
41

(10 行受影响)

exec SplitPage tb,10,3,Col,DESC
Col
-----------
30
29
28
27
26
25
24
23
22
21

(10 行受影响)