web-dev-qa-db-ja.com

RedGateSQLプロンプト-カーソルスニペットの間違い

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 NEXTWHILEループ内)incorrect?ループのendにあるか、少なくともafter変数を使用する必要があるクエリ(クエリ)にある必要があります、 番号?

2
NateJ

はい、それは不正解です。内側のFETCH NEXTは、ループの[〜#〜] end [〜#〜]に配置する必要があります。上記のコードは次のようになります。

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に送信します...

1
NateJ