MSSQL里,替代cursor的一种方法。

在MSSQL里,我们可以使用Cursor来实现数量循环处理。但是Cursor有一个问题,就是效率慢。当然,如果机器性能很好的服务器就例外。我在这里介绍一个简单的方法,可以替代Cursor。在简单的,处理数据不是很多的情况下,应该可行的。我自己的程序里,间中会使用到。


以下用一个例子来解释:

declare @i int  -- 要循环的行数
declare @id int
declare @firstname varchar(20)
declare @lastname varchar(20)
declare @ids table (id int primary key) --拿来保存已经处理了的id
select @i=count(id) from users where firstname>'Michael'
while @i>0
begin
   --- 拿出一行来处理
   select top 1 @id=u.id, @firstname=firstname, @lastname=lastname from users u 
      where firstname='Michael' and not exists(select id from @ids where id=u.id)
   --- 把已经拿出的id保存起来
   insert into @ids (id) values(@id)
   -- 处理
   print @firstname+' '+@lastname
   -- 下一条记录。
   set @i=@i-1
end

例子里,我先拿出要循环的次数,目的是防止死循环。有些时候,编写逻辑一混乱,就会造成死循环。所以我没有使用一种循环到没有记录为止的循环。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值