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 行受影响)

原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/236196.html

(0)
上一篇 2022年1月24日
下一篇 2022年1月24日

相关推荐

发表回复

登录后才能评论