while tabla recorrer loo for ejemplo sql sql-server loops tsql syntax

tabla - while exists sql server



Sintaxis de for-loop en SQL Server (8)

¿Cuál es la sintaxis de un bucle for en TSQL?


Información extra

Solo para agregar como nadie ha publicado una respuesta que incluya cómo iterar realmente un conjunto de datos dentro de un bucle, puede usar las palabras clave OFFSET FETCH .

Uso

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


La respuesta simple es NO !! .

No hay FOR en SQL, pero puede usar WHILE o GOTO para lograr la forma en que funcionará FOR .

MIENTRAS :

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

IR :

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

Siempre prefiero WHILE sobre la declaración GOTO .


Mientras que el ejemplo de bucle en T-SQL muestra la fecha de inicio a final del mes actual

DECLARE @Today DATE= GETDATE() , @StartOfMonth DATE , @EndOfMonth DATE; DECLARE @DateList TABLE ( DateLabel VARCHAR(10) ); SET @EndOfMonth = EOMONTH(GETDATE()); SET @StartOfMonth = DATEFROMPARTS(YEAR(@Today), MONTH(@Today), 1); WHILE @StartOfMonth <= @EndOfMonth BEGIN INSERT INTO @DateList VALUES ( @StartOfMonth ); SET @StartOfMonth = DATEADD(DAY, 1, @StartOfMonth); END; SELECT DateLabel FROM @DateList;


No hay un bucle for, solo el bucle while:

DECLARE @i int = 0 WHILE @i < 20 BEGIN SET @i = @i + 1 /* do some work */ END


Para el bucle no es oficialmente compatible con el servidor SQL. Ya hay answer para lograr las diferentes formas de FOR Loop. Estoy detallando la respuesta sobre las 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 sabe, debe completar la primera iteración del bucle de todos modos, luego puede probar la versión DO..WHILE o REPEAT..UNTIL del servidor SQL.

DO..WHILE Loop

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

REPEAT..UNTIL Loop

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

Reference


Qué tal esto:

BEGIN Do Something END GO 10

... por supuesto, usted podría poner un contador incremental dentro de él si necesita contar.


T-SQL no tiene un bucle FOR , tiene un bucle WHILE
WHILE (Transact-SQL)

WHILE Boolean_expression BEGIN END


DECLARE @intFlag INT SET @intFlag = 1 WHILE (@intFlag <=5) BEGIN PRINT @intFlag SET @intFlag = @intFlag + 1 END GO