关闭

能处理百万数据的存储过程

788人阅读 评论(0) 收藏 举报

//过程名和输入输出参数

CREATE PROCEDURE GetCustomDataPage @pageSize int, @pageIndex int, @pageCount int output, @recordCount int output AS

//定义变量

declare @SQL varchar(1000)

//取得记录数量

select @recordCount=count(*) from products

//计算得到页数

set @pageCount=ceiling(@recordCount*1.0/@pageSize)

//经典算法,我还没有看明白

if @pageIndex = 0 or @pageCount<=1

 set @SQL='select top '+str(@pageSize)+' productID,productName, unitPrice from products order by productID asc'

else if @pageIndex = @pageCount -1

 set @SQL='select * from ( select top '+str(@recordCount - @pageSize * @pageIndex)+' productID,productName, unitPrice from products order by productID desc) TempTable order by productID asc'

else set @SQL='select top '+str(@pageSize) +' * from ( select top '+str(@recordCount - @pageSize * @pageIndex)+' productID,productName, unitPrice from products order by productID desc) TempTable order by productID asc' exec(@SQL)


GO

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:82675次
    • 积分:1226
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:15篇
    • 译文:0篇
    • 评论:16条
    最新评论