SQL简单分页查询

create procedure GetDataByPage(
@sqlStr varchar(8000),
@pageSize int --页面大小
@currentPage int --当前页面
)

as
declare @firstRec int
declare @lastRec int
declare @dt varchar(20)
declare @tempTableName varchar(16)
--计算页面算法
select @firstRec = ( @currentPage - 1) * @pageSize
select @lastRec = ( @currentPage * @pageSize + 1)
--页起始行,页结束行,生成临时表的随机数
select @dt = substring( convert(varchar,rand()),3,10)
select @sqlStr = stuff( @sqlStr, charindex(' FROM ',upper(@sqlStr)),6,
' into tempdb..Page'+ @dt +' FROM ')
exec( @sqlStr )
select @tempTableName = 'tempdb..Page'+ @dt
--增加ID号
select @sqlStr = ' alter '+@tempTableName+' add TEMPDB_ID numberic(10) identity primary key '
--查询
select @sqlStr = ' select * from ' + @tempTableName
+ ' where TEMPDB_ID > ' + convert( varchar,@firstRec )
+ ' and TEMPDB_ID < ' + convert( varchar,@lastRec )

exec(@sqlStr)

--删除临时表
select @sqlStr = ' drop table ' + @tempTableName
exec(@sqlStr)


转载于:https://www.cnblogs.com/pengshaomin/archive/2012/03/19/2407168.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值