Sintaxis del bucle for en SQL Server

Resuelto Macho asked hace 13 años • 11 respuestas

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

Macho avatar May 20 '11 14:05 Macho
Aceptado

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
TcKs avatar May 20 '2011 07:05 TcKs

T-SQL no tiene un FORbucle, tiene un WHILEbucle
MIENTRAS (Transact-SQL)

WHILE Boolean_expression
BEGIN

END
Amit avatar May 20 '2011 07:05 Amit

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
Dan Cundy avatar Jun 23 '2017 13:06 Dan Cundy

DECLARE @intFlag INT
SET @intFlag = 1
WHILE (@intFlag <=5) 
BEGIN
    PRINT @intFlag
    SET @intFlag = @intFlag + 1
END
GO
kashmir avatar Mar 01 '2013 09:03 kashmir

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

Somnath Muluk avatar Sep 22 '2017 10:09 Somnath Muluk