[RESOLVIDO]Dúvida com procedure PL/SQL

Olá companheiros!
Estou com um pequeno problema, que venho tentando resolver a algum tempo…
O código é o seguinte:

[code]DELIMITER $$
/*
Esta procedure cria, para cada grupo existente, um livrable em branco.
Possibilitando, assim, a visualização de quais grupos possuem Livrables cadastrados, e quais não possuem.
*/
DROP PROCEDURE IF EXISTS pvoriginal.criaLivrables $$
CREATE PROCEDURE pvoriginal.criaLivrables ()
BEGIN
DECLARE cont, maxlivrable, quantGrupos int;
select max(id_grupo) into quantGrupos from grupo;
set cont = 1;
while cont <= quantGrupos loop

    insert into livrables(`id_livrable`, `plan2d3d`, `pcp`, `rcm`, `compteRenduEpc`, `gamaDeControle`, `defeitos`, `declarationDeConformite`, `sinotico`, `fnrRang2`, `ficheDet`, `st`, `pds`, `piv`, `raportEssaisCondicionement`, `macsi`, `certificatDeHomologation`) values(0,'','','','','','','','','','','','','','','','');
    commit;
    select max(id_livrable) into maxlivrable from livrables;

    update grupo set id_livrable = maxlivrable where id_grupo = cont;
    commit;
end loop;

END $$

DELIMITER ;[/code]

E a mensagem de erro retornada pelo MySQL Query Browser é:

[code]Script line: 7 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'loop

    insert into livrables(`id_livrable`, `plan2d3d`, `pcp`, `rcm`, `' at line 6[/code]

Será que alguém pode me ajudar?
Abraços!

Problema resolvido!
O código final fica desta forma:

[code]DELIMITER $$
/*
Esta procedure cria, para cada grupo existente, um livrable em branco.
Possibilitando, assim, a visualização de quais grupos possuem Livrables cadastrados, e quais não possuem.
*/
DROP PROCEDURE IF EXISTS pvoriginal.criaLivrables $$
CREATE PROCEDURE pvoriginal.criaLivrables ()
BEGIN
DECLARE cont, maxlivrable, quantGrupos int;
select max(id_grupo) into quantGrupos from grupo;
set cont = 1;
while cont <= quantGrupos do

    insert into livrables(`id_livrable`, `plan2d3d`, `pcp`, `rcm`, `compteRenduEpc`, `gamaDeControle`, `defeitos`, `declarationDeConformite`, `sinotico`, `fnrRang2`, `ficheDet`, `st`, `pds`, `piv`, `raportEssaisCondicionement`, `macsi`, `certificatDeHomologation`) values(0,'','','','','','','','','','','','','','','','');
    commit;
    select max(id_livrable) into maxlivrable from livrables;

    update grupo set id_livrable = maxlivrable where id_grupo = cont;
    commit;
    set cont = cont + 1;
end while;

END $$

DELIMITER ;[/code]