创建分页的存储过程语句

只针对一张表的情况

create  procedure pro_createPagination  --创建分页的存储过程语句
@primaryKeyName varchar(20),               --主键字段名
@orderField varchar(20),                           --排序字段名
@orderFiledType varchar(10),                   --排序字段排列顺序
@tableName varchar(20),                          --表名
@fieldStr varchar(1000),                            --所须的字段名
@type bit,                                                     --类型(生成那种分页语句)                       
@strSql varchar(1000) output                    --生成的SQL语句
as
    begin
           if  @type=1

     set @strSql=' select top pageSize ' +@fieldStr+' from '
    
+@tableName+' where '+@primaryKeyName+' not in
     ( select top ((pageSize*(page-1))
'+@primaryKeyName+' from '+
     @tableName +' order by
'+@orderField+' '+ @orderFiledType
     + ' ) order by
'+@orderField+' '+@orderFiledType
 else
       if  @orderFiledType='asc'
                 set @strSql='select top pageSize
'+@fieldStr+' from '
                
+@tableName+' where '+@primaryKeyName+'>( select max
                 (
'+@primaryKeyName+') from (select top
                 ((pageSize*(page-1)) '+ @primaryKeyName+
                ' from '+ @tableName+' order by '+ @orderField +' ) as T)
                 order by
'+@orderField+ ''
      else
                  set @strSql='select top pageSize
'+@fieldStr+' from '
                  
+@tableName+' where '+@primaryKeyName+'<( select min
                  (
'+@primaryKeyName+') from (select top
                  ((pageSize*(page-1)) '+ @primaryKeyName+
                  ' from '+ @tableName+' order by '+ @orderField +' desc ) as T)
                  order by
'+@orderField+ ' desc

end

测试语句:

declare @strSql varchar(1000)
exec pro_createPagination 'id','id','desc','students','*',1,@strSql output
print @strSql 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值