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:

 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:

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.

Ejemplo

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

Por ejemplo:

DECLARE @sitio INT;
SET @sitio = 0;

WHILE @sitio <= 5
BEGIN
   IF @sitio = 2
      BREAK;
   ELSE
      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. 

Por ejemplo:

DECLARE @sitio INT;
SET @sitio = 0;
WHILE @sitio <= 5
BEGIN
   IF @sitio = 2
      BREAK;
   ELSE
   BEGIN
      SET @sitio = @sitio + 1;
      PRINT 'Ejemplo Bucle WHILE en sqlserverdb.com';
      CONTINUE;
   END;
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