遍历查询结果集的另一种思路

          在SQLServer中,有时需要数据库里实现SQL结果集遍历,当然首先会想到使用SQL游标,但SQL游标最大的缺点就是复杂和低效。

  • 创建表变量来保存临时结果集,用@@RowCount来控制循环结束标记。

Create procdure pro

As

Begin

       declare @cwbrecord table /*定义订单的表变量 用于遍历订单号*/

        (

         cwb  varchar(50),   

         flagID TINYINT/*这个表变量中增加一个FLAGID进行数据初始值为0的存放,然后去循环这个记录集,每循环一次,就把对应的FLAGID 的值改成1,然后再根据循环来查找满足条件等于0的情况,每循环一次,处理的记录集就会少一次,达到快速遍历,此种方式比游标 遍历效率高很多*/

        )

       declare  @totalcount int

       declare  @rownum int

insert  into @cwbrecord  select ops.cwb,0 from express_ops_cwb

/*设置循环总数*/

set  @totalcount = @@ROWCOUNT

 /*设置循环起始值*/

           set @rownum = 1

/*    循环*/

        while @rownum <=@totalcount

         begin

             declare @cwb varchar(50)

              select top 1 @cwb=cwb from @cwbrecord where flagID=0

              ……你要完成的逻辑

              update @cwbrecord set flagID=1 where cwb=@cwb

              set @rownum = @rownum + 1

         End

End

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值