SqlServer 存储过程分页

适用于2005以上版本

create procedure [dbo].[SP_GetPageList]
(
@columns nvarchar(max),   --查询字段
@tablename nvarchar(max), --表名\视图
@orderby nvarchar(max),   --排序字段
@swhere nvarchar(max),     --查询条件
@pagesize int,             --每页条数
@pageindex int,            --页的索引
@rowCount int output       --总记录数
)
as 

--获取总记录数
declare @sqlcount Nvarchar(max)
set @sqlcount=N'select @rowCount=count(*) from '+@tablename+' '+@swhere
exec sp_executesql @sqlcount, N'@rowCount int out', @rowCount out


--计算页数
declare @pagecout int 
if @rowCount%@pagesize>0
set @pagecout=(@rowCount/@pagesize)+1
else
set @pagecout=(@rowCount/@pagesize)
 

--计算起始索引
declare @begin nvarchar(30)
declare @end nvarchar(30)

if @pageindex<1
set @pageindex=1

if @pageindex>@pagecout
set @pageindex=@pagecout
set @begin=convert(nvarchar(30), (@pagesize*(@pageindex-1))+1)
set @end=CONVERT(nvarchar(30), @pagesize*@pageindex)


--查询结果
declare @sqlre nvarchar(max)
declare @top int
set @top=@pageindex*@pagesize
set @sqlre=N'select top '+Cast(@top as varchar)+' ROW_NUMBER() over('+@orderby+') as rownum, '+@columns+' from '+@tablename+' '+@swhere

exec('select '+@columns+' from ('+@sqlre+') a where a.rownum between '+@begin+' and '+@end+' '+@orderby)

 

转载于:https://www.cnblogs.com/crazy29/p/3195929.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值