T-SQL では、カーソルからの結果を反復する場合、ループのFETCH
前にステートメントを繰り返すのが一般的な方法のようです。WHILE
以下のMicrosoftの例:
DECLARE Employee_Cursor CURSOR FOR
SELECT EmployeeID, Title FROM AdventureWorks2012.HumanResources.Employee
WHERE JobTitle = 'Marketing Specialist';
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Employee_Cursor;
END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO
( FETCH NEXT FROM Employee_Cursor;
2 回表示されることに注意してください。)
変数の長いリストを選択FETCH
すると、見苦しく、もちろん「非 DRY」コードである大きな重複ステートメントができます。
私は事後条件のフロー制御 T-SQL ステートメントを認識していないので、WHILE(TRUE)
and then BREAK
when @@FETCH_STATUS
is not zero に頼る必要があるようです。これは私には不格好に感じます。
他にどのようなオプションがありますか?