使用RedGate的SQL提示符&热爱它。但是,我今天第一次使用了"curff“片段(”快速转发只读游标“),它生成了以下TSQL (我已将其填入以使其成为一个具体示例):
DECLARE @variable INT
DECLARE Curse CURSOR FAST_FORWARD READ_ONLY FOR
SELECT ID FROM #TempTable
OPEN Curse
FETCH NEXT FROM Curse INTO @variable
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Curse INTO @variable --This seems wrong...
PRINT ('Hello, I am # ' + CAST(@variable AS VARCHAR(10)))
END
CLOSE Curse
DEALLOCATE Curse内部FETCH NEXT (在WHILE循环中)的位置不正确吗?它应该在循环的末尾,或者至少在需要使用变量的查询(查询)之后,不是吗?
发布于 2016-05-18 21:20:10
是的,这是错误的。内部FETCH NEXT应该位于循环的末尾。上述守则将产生以下结果:
Hello, I am # 2
Hello, I am # 3
Hello, I am # 4
Hello, I am # 5
Hello, I am # 5纠正问题,并将FETCH NEXT放在循环的末尾,将得到正确和预期的输出:
Hello, I am # 1
Hello, I am # 2
Hello, I am # 3
Hello, I am # 4
Hello, I am # 5现在把这个提交给RedGate..。
https://dba.stackexchange.com/questions/138937
复制相似问题