Tienes que usar condition handlers. defines uno de estos handlers para cada tipo de excepción que quieras manejar, usando el número del error que quieres interceptar, o las condiciones SQLEXCEPTION, SQLWARNING y NOT FOUND (hay más posibilidades, mira el manual).
en este caso declaro una variable numérica...
DECLARE insert_error INTEGER DEFAULT 0;
declaro el handler que se ejecutará en caso de un SQLEXCEPTION. el handler puede ser de tipo EXIT (sal del procedure) o CONTINUE (el procedure sabe cómo salir del problema, no lo interrumpas)
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN
SET insert_error=1;
END;
START TRANSACTION
insert into ejemplo(nombre, apellidos) values (´Alain´, ´ramos´)
si SQL lanza alguna excepcion el valor de insert_error ya no será 0
IF insert_error THEN
ROLLBACK
ELSE
COMMIT
END IF
esto te dará una idea. para obtener más información, el libro de O'Reilly "MySQL Stored Procedure Programming" (de donde saqué esta información) o en esta web en
http://dev.mysql.com/doc/refman/5.1/en/handler.html
Suerte.
ff