也谈存储过程分页

最近我测试 小春 写的 存储分页 ,发现有些许问题:
 建立一个test(id,name,fid)
 向test添充几十条数据,使id=1,2,3,4.........(即递增的integer),其他任意
 在T-sql Debugger给改存储过程分别传递如下参数:
    @queryStr= * from test
    @keyField=[ID]     
    @pageSize=3            
    @pageNumber=1
 问题出来了,看输出结果(注意id):
 id        name          fid
 4         kwklover       2
 5         kwklover       2
 6         kwklover       2
 根据传入参数,我们的预期应该是:
 id        name          fid
 1         kwklover       2
 2         kwklover       2
 3         kwklover       2

 下面是我参照小春存储分页写的分页存储过程,可以解决上面的问题:
CREATE Procedure prGetRecordByPage
(
   @PageSize int,   --每页的记录条数 
   @PageNumber int, --当前页面
   @QuerySql varchar(1000),--部分查询字符串,如* From Test order by id desc
   @KeyField varchar(500) 
)
AS
Begin

 Declare @SqlTable AS varchar(1000)
 Declare @SqlText AS Varchar(1000)

 Set @SqlTable='Select Top '+CAST(@PageNumber*@PageSize AS varchar(30))+' '+@QuerySql
 Set @SqlText='Select Top '+Cast(@PageSize AS varchar(30))+' * From '
        +'(
'+@SqlTable+') As TembTbA '
        +'Where
'+@KeyField+' Not In (Select Top '+CAST((@PageNumber-1)*@PageSize AS varchar(30))+' '+@KeyField+' From '
        +'(
'+@SqlTable+') AS TempTbB)'
 Exec(@SqlText)

End
GO

至于效率如何,呵呵,我也不知道,
因为我还不知道怎么测试存储过程的运行效率,希望各位朋友不吝赐教!先行谢过了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值