create table tb(id int) insert into tb select 1 union all select 2 go declare cursor1 CURSOR for select id from tb declare @id int OPEN cursor1 FETCH NEXT FROM cursor1 INTO @id WHILE @@FETCH_STATUS = 0 BEGIN print @id FETCH NEXT FROM cursor1 INTO @id end CLOSE cursor1 DEALLOCATE cursor1 print @id/* 1 2 2*/ go drop table tb可见,游标结束了,但变量值保持原来的值,不受fetch next into 的影响.
insert into tb select 1 union all select 2
go
declare cursor1 CURSOR for select id from tb
declare @id int
OPEN cursor1
FETCH NEXT FROM cursor1 INTO @id
WHILE @@FETCH_STATUS = 0
BEGIN
print @id
FETCH NEXT FROM cursor1 INTO @id
end
CLOSE cursor1
DEALLOCATE cursor1
print @id/*
1
2
2*/
go
drop table tb可见,游标结束了,但变量值保持原来的值,不受fetch next into 的影响.