SQL Server中for循环的语法

TSQL中for循环的语法是什么?

T-SQL没有FOR循环,它有一个WHILE循环
WHILE(Transact-SQL)

 WHILE Boolean_expression BEGIN END 

没有for循环,只有while循环:

 DECLARE @i int = 0 WHILE @i < 20 BEGIN SET @i = @i + 1 /* do some work */ END 
 DECLARE @intFlag INT SET @intFlag = 1 WHILE (@intFlag <=5) BEGIN PRINT @intFlag SET @intFlag = @intFlag + 1 END GO 

这个怎么样:

 BEGIN Do Something END GO 10 

如果你需要计数的话,你当然可以在里面放一个增量计数器。

简单的答案是NO !!

在SQL中没有FOR ,但是可以使用WHILEGOTO来实现FOR如何工作的方式。

WHILE:

 DECLARE @a INT = 10 WHILE @a <= 20 BEGIN PRINT @a SET @a = @a + 1 END 

去 :

 DECLARE @a INT = 10 a: PRINT @a SET @a = @a + 1 IF @a < = 20 BEGIN GOTO a END 

我总是比GOTO语句更喜欢WHILE

额外的信息

只需添加没有人发布的答案,包括如何实际迭代循环内的数据集,您可以使用关键字OFFSET FETCH 。

用法

 DECLARE @i INT = 0; SELECT @total = Count() FROM DATASET WHILE @i < @total BEGIN SELECT STUFF FROM TABLE ORDER BY COLUMN OFFSET @i ROWS FETCH NEXT 1 ROWS ONLY SET @i = @i + 1; END 

For循环尚未官方支持SQL服务器。 已经有答案实现FOR循环的不同方式。 我详细回答了在SQL Server中实现不同types循环的方法。

FOR循环

 DECLARE @cnt INT = 0; WHILE @cnt < 10 BEGIN PRINT 'Inside FOR LOOP'; SET @cnt = @cnt + 1; END; PRINT 'Done FOR LOOP'; 

如果你知道,无论如何你需要完成循环的第一次迭代,然后你可以尝试DO..WHILEREPEAT..UNTIL版本的SQL服务器。

DO..WHILE循环

 DECLARE @X INT=1; WAY: --> Here the DO statement PRINT @X; SET @X += 1; IF @X<=10 GOTO WAY; 

REPEAT..UNTIL循环

 DECLARE @X INT = 1; WAY: -- Here the REPEAT statement PRINT @X; SET @X += 1; IFNOT(@X > 10) GOTO WAY; 

参考