欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MSSQL一种取代游标的方案

程序员文章站 2022-07-02 21:29:49
今天看到一篇文章写的自己整理记录下,据说比用游标快。 ......

今天看到一篇文章写的自己整理记录下,据说比用游标快。

declare @字段1 数据类型;
declare @字段2 数据类型;

declare @tmp_while_id int;
select tmp_while_id=identity(int,1,1),tmp_while_flag=0,

[字段1],[字段2],...

into #tmp_while from [表名] where [条件]....;

select @tmp_while_id=min(tmp_while_id) from #tmp_while where tmp_while_flag=0;
while @tmp_while_id is not null
begin
    --获取当前处理行的信息
    select @字段1=字段1,@字段2=字段2,... from #tmp_while where tmp_while_id=@tmp_while_id;
    
    --<这里自己的处理过程>
    
    --标识当前行已处理完毕
    update #tmp_while set tmp_while_flag=1 where tmp_while_id=@tmp_while_id;
    --选择下一行号
    select @tmp_while_id=min(tmp_while_id) from #tmp_while where tmp_while_flag=0 and tmp_while_id>@tmp_while_id;
end
drop table #tmp_while;