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 usarWHILE
oGOTO
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;
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