使用row_number实现分页的存储过程的简单实现

 

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE   Proc   [dbo].[Pagination]  
  @QueryStr   nvarchar(4000),
  @PageSize   int=10,
  @PageIndex   int=1,
  @FdShow   nvarchar   (4000)='',
  @FdOrder   nvarchar   (1000)=''
 
  as  
    Begin
  
  declare @StartCount varchar(20);
  declare @EndCount varchar(20);
  
  set @StartCount=cast(@PageSize*(@PageIndex-1)+1 as varchar(20));
  set @EndCount=cast(@PageSize*@PageIndex as varchar(20));
   
  if @FdOrder=''
   set @FdOrder='ID';

  exec('select * from (
  select row_number() over (order by '+@FdOrder+') row,'+@FdShow+' from ('+
  ' select top '+@EndCount+' '+@FdShow+' from '+@QueryStr+') tt ) tmp
  where row between '+@StartCount+' and '+ @EndCount);
  return;
 End

GO

 

执行脚本:

exec Pagination 'testTable',5000,1,'*','OrderCol';

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值