t-sql游标:“先从中获取”重新生成游标的内容吗?

时间:2010-11-03 21:10:21

标签: sql-server cursor

我有一块别人的代码基本上就是这样做的:

declare X cursor static for select * from stuff
open cursor X
fetch next from X
while @@fetch_status = 0
begin
  do stuff
  fetch next from X
end

fetch first from X
while @@fetch_status = 0
begin
  do different stuff
  fetch next from X
end

为了解决问题,是的,我知道游标很糟糕/不再流行/等等。我没有写它。我只需要解决它。现在回答问题:

如果底层游标后面的数据在第一个循环和第二个循环之间发生变化,第二个游标循环是否可以看到与第一个游标循环不同的数据?或者静态限定符是否会阻止它?

1 个答案:

答案 0 :(得分:3)

光标检索的数据不会改变。记录在案here

  

STATIC

     

定义一个生成的游标   要使用的数据的临时副本   通过光标。所有要求   光标从这里回答   tempdb中的临时表;因此,   对基表进行的修改是   没有反映在返回的数据中   对此游标进行的提取,以及此操作   光标不允许修改。