com
http://www.hermosaprogramacion.com/2014/06/mysql-sql-server-while/
La sentencia WHILE de SQL ejecuta una conjunto de instrucciones varias veces, mientras la condicin por la cual
se rige sea verdadera. Si en algn momento es falsa el bucle se termina.
WHILE
instruciones
[etiqueta:] WHILE DO
instruciones
END WHILE [etiqueta]
SQL Server
MySQL
MySQL permite la posibilidad de agregar etiquetas al WHILE para mejor legibidad del texto. SQL Server no
requiere una sentencia END para cerrar el bucle. Otra diferencia es que MySQL usa la palabra reservada DO para
indicar las instrucciones que van dentro del bucle. Y Si deseamos ejecutar varias instrucciones dentro del WHILE en
SQL Server debemos crear un bloque de instrucciones.
Tienes ejemplos?
Claro!, resolvamos el siguiente enunciado que requiere uso de un bucle WHILE:
Veamos:
DECLARE @i INT = 0;
WHILE @i <= 10
BEGIN;
IF (@i%2!=0)
PRINT @i
SET @i=@i+1;
END;
SQL Server
END WHILE;
MySQL
Simplemente declaramos una variable llamada i que acta como contador. Cada
iteracin el WHILE comprueba si el modulo entre 2 del nmero actual es distinto de
0, si es as se muestra el nmero, si no, no pasa nada.
DECLARE @i INT = 0;
WHILE @i <= 10
BEGIN;
SET @i=@i+1;
IF (@i%2!=0)
CONTINUE;
PRINT @i;
END;
CONTINUE
DECLARE @i INT = 0;
WHILE @i <= 10
BEGIN;
IF (@i%2!=0)
PRINT @i;
IF @i=5
BREAK;
SET @i=@i+1;
Resultado XAMPP v3.2.1 phpMyAdmin
END;
BREAK
El cdigo del lado derecho usa la sentencia CONTINUE para producir los nmeros pares del 1 al 10. Si observas
cada ves que hay un impar se salta la impresin y por ello no se tienen en cuenta los impares. En el segundo
ejemplo se obtienen los impares solo hasta el nmero 5, ya que cerramos el bucle con BREAK de forma inmediata
cuando la variable @i es igual a 5.
MySQL tiene comandos equivalentes a CONTINUE y BREAK. Ellos son ITERATE y LEAVE.
Ambas sentencias deben usarse con una etiqueta del WHILE para poder funcionar.
Reconstruyamos los ejemplos anteriores y comprobemos estas dos sentencias:
LEAVE
Al ejecutar estos ejemplos dentro de un procedimiento cualquiera de MySQL, obtendremos los mismos resultados
que en SQL Server: