当您需要循环一组数据时,使用 SQL Server 游标有好处吗?或者使用 WHILE 循环(见下文)也一样。
我问这个问题是因为 WHILE 循环看起来更清晰、更容易理解。
-- loop through a table
DROP TABLE IF EXISTS #LoopingSet;
CREATE TABLE #LoopingSet (RowID INT IDENTITY(1,1), DatabaseName sysname);
INSERT INTO #LoopingSet (DatabaseName) SELECT [name] FROM sys.databases WHERE database_id > 4 ORDER BY name;
DECLARE @i INT = (SELECT MIN(RowID) FROM #LoopingSet);
DECLARE @n INT = (SELECT MAX(RowID) FROM #LoopingSet);
DECLARE @DatabaseName sysname = '';
WHILE (@i <= @n)
BEGIN
SELECT @DatabaseName = DatabaseName FROM #LoopingSet WHERE RowID = @i;
PRINT @DatabaseName; -- do something here
SELECT @i = MIN(RowID) FROM #LoopingSet WHERE RowID > @i;
END;