MSSQL 存储过程分页 测试 1

没有进行仔细的测试 只是对算法进行了点研究
参考了别人的存储过程分页的算法 再加上自己想的

declare @TotalRecord real
declare @Page_Size real
declare @Page_Count real
declare @Page_Order int
declare @SQLQuery varchar(1000)

SELECT @TotalRecord=COUNT(Digitaltion_ID) FROM [DigitalART_Digitaltion]

Set @Page_Order = 2
Set @Page_Size = 10
Set @Page_Count = CEILING(@TotalRecord/@Page_Size)
SELECT @Page_Count AS Page_Count, @Page_Size AS Page_Size, @Page_Order AS Page_Order


IF (@Page_Order > @Page_Count/2)
  BEGIN
    Set @SQLQuery = 'SELECT TOP '+Cast(@Page_Size AS varchar(30))+' Digitaltion_ID FROM [DigitalART_Digitaltion] WHERE Digitaltion_ID IN (SELECT TOP '+CAST(@TotalRecord - (@Page_Order - 1)*@Page_Size AS varchar(30))+' Digitaltion_ID FROM [DigitalART_Digitaltion] ORDER BY Digitaltion_ID Asc) ORDER BY Digitaltion_ID Desc'
  END
Else
  BEGIN
    Set @SQLQuery = 'SELECT TOP '+Cast(@Page_Size AS varchar(30))+' Digitaltion_ID FROM [DigitalART_Digitaltion] WHERE Digitaltion_ID NOT IN (SELECT TOP '+CAST((@Page_Order-1)*@Page_Size AS varchar(30))+' Digitaltion_ID FROM [DigitalART_Digitaltion] ORDER BY Digitaltion_ID Desc) ORDER BY Digitaltion_ID Desc'
  END
SELECT @SQLQuery
EXEC(@SQLQuery)
GO

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值