Ciao,
praticamente subito all'inzio della stored procedure devi dichiarare gli exit handler per decidere cosa fare quando ci sono degli errori nella transazione..


codice:
create procedure pippo()
begin
#se una select non trova il dato fai rollback
declare exit handler for not found rollback; 

#se si verifica un'eccezione fai rollback
declare exit handler for sqlexception rollback; 

#ecc. ecc.


start transaction

(...qui fai le tue insert, delete e altre istruzioni DDL ...)

commit;


end


riferimenti : http://dev.mysql.com/doc/refman/5.5/...e-handler.html