DROP PROCEDURE IF EXISTS `procedure_foo`; DELIMITER $$ CREATE PROCEDURE `procedure_foo`() BEGIN DECLARE i INTEGER UNSIGNED DEFAULT 0; DECLARE i_max INTEGER UNSIGNED DEFAULT 50; START TRANSACTION; WHILE i < i_max DO -- INSERT SQL HERE SET i = i + 1; END WHILE; COMMIT; END $$ delimiter ; CALL procedure_foo(); DROP PROCEDURE procedure_foo;