Solución:
No puede hacer un bucle for en un editor SQL sin un procedimiento almacenado. yo suelo MySQL Workbench
para hacer esto.
Un procedimiento almacenado rápido debería hacer el trabajo:
DROP PROCEDURE IF EXISTS proc_loop_test;
CREATE PROCEDURE proc_loop_test()
BEGIN
DECLARE int_val INT DEFAULT 0;
test_loop : LOOP
IF (int_val = 10) THEN
LEAVE test_loop;
END IF;
SET int_val = int_val +1;
SELECT int_val;
END LOOP;
END;
Solo para aclarar que los bucles “while” hacer trabaja:
Se dijo con razón que es necesario crear un procedimiento almacenado (no se pueden ejecutar bloques anónimos como en Oracle, por ejemplo) y, a veces, no funciona bien en editores SQL “genéricos” (ya que PL / SQL no siempre funcionan bueno tampoco)
Puede usar MySQL Workbench, o también la línea de comando:
16:54 [test]:> delimiter $$
16:54 [test]:> create procedure testwhile ()
-> begin
-> declare n int;
-> set n:=0;
-> while n <10 do
-> select n;
-> set n := n+1;
-> end while;
-> end;
-> $$
Query OK, 0 rows affected (0.00 sec)
16:54 [test]:> delimiter ;
16:54 [test]:> call testwhile();
[...]
Como nota al margen, @variables
también funcionan, pero son variables de sesión. En este caso, prefiero las variables de procedimiento almacenado local (no se pueden ver ni modificar fuera del alcance del procedimiento)