SQL While: Para Crear Bucle

La instrucción SQL WHILE es una instrucción de flujo de control que le permite ejecutar un bloque de instrucciones repetidamente siempre que una condición específica sea TRUE. El bucle While comienza con la condición y, si el resultado de la condición es verdadero, se ejecutarán las instrucciones dentro del bloque BEGIN…END. 

Sintaxis de la instrucción SQL WHILE

La instrucción SQL WHILE ejecuta repetidamente un bloque de instrucciones SQL. Esto se denomina bucle y continúa hasta que la condición de la instrucción WHILE sea verdadera.

El formato general de las declaraciones WHILE es:

Ejemplo de Bucle WHILE en SQL


WHILE condición
BEGIN
    -- Ejecución del bloque de código cuando la condición es VERDADERA
END
  1. Si la condición es verdadera, ejecuta el código dentro de las instrucciones SQL BEGIN…END.
  2. Dentro del ciclo while, debemos usar los operadores aritméticos para incrementar y reducir el valor.
  3. Después de que el valor aumente, nuevamente, el servidor verifica la condición. Mientras la condición sea Verdadera, continúa el proceso.
  4. Si la expresión se evalúa como falsa, sale del bloque BEGIN…END.

Nota

  • Usaría una instrucción SQL WHILE cuando no tenga claro el número de veces que desea la ejecución del cuerpo del bucle.
  • Dado que la condición WHILE SQL SEVER la evalúa antes de ingresar al ciclo, es posible que el cuerpo del ciclo no se ejecute ni una sola vez.

Si te encuentras repitiendo declaraciones, especialmente aquellas que caen en un patrón, entonces, existe la posibilidad de que puedas usar una instrucción SQL WHILE para ahorrar algo de escritura y hacer que tu programa sea más divertido de escribir.

Ejemplo instrucción SQL WHILE

En este ejemplo muestro cómo usar un bucle con SQL WHILE en Transacciones-SQL.

Por ejemplo:

Ejemplo Completo de Bucle WHILE en SQL Server


DECLARE @sitio INT;
SET @sitio = 0;

WHILE @sitio <= 5
BEGIN
    PRINT 'Ejemplo Bucle WHILE en sqlserverdb.com';
    SET @sitio = @sitio + 1;
END;

PRINT 'Fin del ejemplo Bucle WHILE en sqlserverdb.com';
GO
sql while

En este ejemplo el bucle SQL WHILE, terminaría una vez que @sitio excediera 5 según lo especificado por:

WHILE @sitio <= 5

El bucle WHILE continuará mientras @sitio<= 5. Y una vez que @sitio sea > 5, el bucle terminará.

Uso de BREAK para salir de un bucle WHILE

BREAK se utiliza para salir por la fuerza del bloque de código de una instrucción SQL WHILE. En el siguiente ejemplo hemos modificado el bucle SQL WHILE para usar el comando BREAK.

Hay dos cambios:

  1. La condición WHILE siempre se evalúa como TRUE, ya que @n es siempre mayor o igual que cero.
  2. El IF ELSE prueba la condición final y, cuando true, ejecuta BREAK.

Veamos un ejemplo que muestra cómo usar la instrucción BREAK en SQL Server (Transact-SQL).

Ejemplo Completo de Bucle WHILE en SQL Server


DECLARE @sitio INT;
SET @sitio = 0;

WHILE @sitio <= 5
BEGIN
    PRINT 'Ejemplo Bucle WHILE en sqlserverdb.com';
    SET @sitio = @sitio + 1;
END;

PRINT 'Fin del ejemplo Bucle WHILE en sqlserverdb.com';
GO

En este ejemplo de instrucción BREAK, saldremos temprano del bucle WHILE, si @sitio es igual a 2.

Nota

  • Utilice la declaración BREAK para terminar un bucle WHILE antes de tiempo.
  • Si hay bucles SQL WHILE anidados, la declaración BREAK terminará el bucle WHILE más interno.

Uso de CONTINUE para restablecer un bucle WHILE

La instrucción CONTINUE reinicia el bloque de código de una instrucción WHILE. Las declaraciones que se encuentren después de CONTINUAR no se ejecutarán.

Por ejemplo, a continuación, PRINT nunca se ejecuta. 

Ejemplo Bucle WHILE con BREAK y CONTINUE en SQL Server


DECLARE @sitio INT;
SET @sitio = 0;

WHILE @sitio <= 5
BEGIN
    SET @sitio = @sitio + 1;

    IF @sitio = 2
        CONTINUE;  -- Salta al inicio del bucle sin ejecutar el PRINT
    ELSE IF @sitio = 4
        BREAK;     -- Sale del bucle cuando @sitio = 4

    PRINT 'Ejemplo Bucle WHILE en sqlserverdb.com - Iteración: ' + CAST(@sitio AS VARCHAR(10));
END;

PRINT 'Fin del ejemplo Bucle WHILE en sqlserverdb.com';
GO

En este ejemplo de instrucción CONTINUAR, reiniciaremos el bucle WHILE si la variable @sitio no es igual a 2, como se especifica en la instrucción IF…ELSE. La razón es que la instrucción BREAK fuerza un EXIT, o cuando se ejecuta el CONTINUE, el bucle vuelve al principio del bloque.

Nota

  • Utiliza la instrucción CONTINUE para reiniciar un bucle WHILE y ejecutar el cuerpo de WHILE nuevamente desde el principio.

Nota interesante sobre el bucle while

Si te encuentras usando un bucle WHILE frecuentemente en SQL, es recomendable reconsiderar el modelo de datos o explorar soluciones alternativas utilizando operaciones basadas en conjuntos, JOINS o procedimientos almacenados. Además, recuerda optimizar tus consultas, utilizar indexación adecuada y aprovechar las ventajas inherentes de SQL para manejar el procesamiento de datos de manera efectiva.

Deja un comentario

📢 Comparte este contenido

Compartir en Facebook Compartir en Twitter Compartir en LinkedIn Compartir en WhatsApp Compartir en Pinterest Compartir en Reddit