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
,但是可以使用WHILE
或GOTO
来实现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..WHILE或REPEAT..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;
参考