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

来源:互联网 发布:怎么看我的淘宝等级 编辑:程序博客网 时间:2024/06/05 17:37

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


以下用一个例子来解释:

declare @i int  -- 要循环的行数declare @id intdeclare @firstname varchar(20)declare @lastname varchar(20)declare @ids table (id int primary key) --拿来保存已经处理了的idselect @i=count(id) from users where firstname>'Michael'while @i>0begin   --- 拿出一行来处理   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-1end

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

0 0
原创粉丝点击