一个sql2005分页的存储过程

CREATE PROCEDURE QueryPage
    -- Add the parameters for the stored procedure here
      @table varchar(50),
@fields varchar(5000) = '*',    --字段名(全部字段为*)  
 @order varchar(5000),        --排序字段(必须!支持多字段)  
 @where varchar(5000) = Null,--条件语句(不用加where)  
 @pageSize int,                    --每页多少条记录  
 @index int = 1 ,            --指定当前为第几页  
 @total int out  
AS
BEGIN
     set nocount on  
           --表名,视图---不接受sql语句  
 
     declare @sql nvarchar(4000)  
    
  set @sql = 'select @total=count(id) from ' + @table +' where 1=1' + @where  
  exec sp_executesql @sql,N'@total int output',@total output--计算总记录数           
  print @total  
 
  if (@total is null)  
  begin  
        set @total = 0  
  end  
 
  if (@order is null or @order='')  
  begin  
       set @order = 'order by id'  
  end  
      
    set @sql = 'select * from (select '+ @fields+', row_number() over ('+ @order +') AS rownum from '  
    set @sql = @sql + @table + ' WHERE 1 = 1' + @where + ') AS a '  
    set @sql = @sql + 'WHERE rownum>'+ cast(@pageSize*(@index-1) as varchar(3))+' AND rownum<= '+ cast(@pageSize*(@index) as varchar(3))  
     
    print @sql  
 exec (@sql)  
 set nocount off  
END
GO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值