代码之家  ›  专栏  ›  技术社区  ›  quillbreaker

t-sql游标:“fetch first from”是否重新生成游标的内容?

  •  2
  • quillbreaker  · 技术社区  · 14 年前

    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 回复  |  直到 14 年前
        1
  •  3
  •   Joe Stefanelli    14 年前

    游标检索的数据不会更改。如文件所述 here :

    定义使 要使用的数据的临时副本 在光标旁边。所有请求 tempdb中的临时表;因此, 对基表所做的修改是 未反映在返回的数据中 获取对此光标所做的