sqlserver游标嵌套

游标嵌套使用时,@@FETCH_STATUS的值有时会从内部游标影响到外部的游标,使外部的游标只循环一次。这时要检查游标的使用方法。要先移动游标,然后就开始判断,为真进行进行业务逻辑处理,然后移动游标,这样就没问题了。示例如下:

declare   外层游标
open   外层游标
fetch   next   ...提取外层游标行
while   @@FETCH_STATUS   =   0
begin
        declare   内层游标
        open   内层游标 
        fetch   next   ...提取内层游标行
        while   @@FETCH_STATUS   =   0
        begin
                    .....业务逻辑处理处理内层游标
                    fetch   next   ....内层游标向下移动一行
        end
        close   内层游标
        deallocate   内层游标
        fetch   next   ....内层游标处理结束后,外层游标才继续向下移动一行
end  
close   外层游标
deallocate   外层游标
       也就是说,外层游标每移动一行,就要重复进行内层游标定义,打开,循环,关闭,释放等操作,然后才能再向下移动行。这样就不会有影响。

猜你喜欢

转载自yuxiang2004.iteye.com/blog/1860295