FETCH
在 T-SQL 中,当从游标迭代结果时,在循环之前重复语句似乎是一种常见的做法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;
出现两次。)
如果FETCH
选择一长串变量,那么我们有一个大的重复语句,它既丑陋,当然也是“非 DRY”代码。
我不知道后置条件控制流 T-SQL 语句,所以看来我不得不求助于 aWHILE(TRUE)
然后BREAK
when@@FETCH_STATUS
不为零。这对我来说感觉很笨拙。
我还有什么其他选择?