Sintaxis del bucle for en SQL Server
¿ Cuál es la sintaxis de un for
bucle en TSQL?
No hay ningún bucle for, sólo el bucle while:
DECLARE @i int = 0
WHILE @i < 20
BEGIN
SET @i = @i + 1
/* do some work */
END
T-SQL no tiene un FOR
bucle, tiene un WHILE
bucle
MIENTRAS (Transact-SQL)
WHILE Boolean_expression
BEGIN
END
Información extra
Solo para agregar, nadie ha publicado una respuesta que incluya cómo iterar realmente sobre un conjunto de datos dentro de un bucle. Puede utilizar las palabras clave OFFSET FETCH .
Uso
DECLARE @i INT = 0;
SELECT @count= Count(*) FROM {TABLE}
WHILE @i <= @count
BEGIN
SELECT * FROM {TABLE}
ORDER BY {COLUMN}
OFFSET @i ROWS
FETCH NEXT 1 ROWS ONLY
SET @i = @i + 1;
END
DECLARE @intFlag INT
SET @intFlag = 1
WHILE (@intFlag <=5)
BEGIN
PRINT @intFlag
SET @intFlag = @intFlag + 1
END
GO
El bucle For aún no es compatible oficialmente con el servidor SQL. Ya existe una respuesta sobre cómo lograr las diferentes formas de FOR Loop. Estoy detallando la respuesta sobre formas de lograr diferentes tipos de bucles en el servidor SQL.
En bucle
DECLARE @cnt INT = 0;
WHILE @cnt < 10
BEGIN
PRINT 'Inside FOR LOOP';
SET @cnt = @cnt + 1;
END;
PRINT 'Done FOR LOOP';
Si lo sabe, necesita completar la primera iteración del bucle de todos modos, entonces puede probar DO..WHILE o REPEAT..UNTIL versión del servidor SQL.
HACER..WHILE Bucle
DECLARE @X INT=1;
WAY: --> Here the DO statement
PRINT @X;
SET @X += 1;
IF @X<=10 GOTO WAY;
REPETIR...HASTA Bucle
DECLARE @X INT = 1;
WAY: -- Here the REPEAT statement
PRINT @X;
SET @X += 1;
IFNOT(@X > 10) GOTO WAY;
Referencia