recomendaciones - porque se dañan las tablas en mysql
Cómo atrapar y volver a lanzar todos los errores en MySQL (1)
Para capturar todas las excepciones de SQL, use:
DECLARE EXIT HANDLER FOR SQLEXCEPTION
SQLWARNINGS
se puede utilizar para detectar advertencias también.
Dentro del controlador de excepción, para generar el error o advertencia que acaba de ser capturado, use:
RESIGNAL
Consulte la documentación de la declaración RESIGNAL:
http://dev.mysql.com/doc/refman/5.5/en/resignal.html
Esto está disponible desde MySQL 5.5
Parece que no puedo encontrar en ninguna parte cómo atrapar y volver a lanzar cualquier error o advertencia que pueda ocurrir en un procedimiento.
Lo que quiero es la sintaxis para hacer lo siguiente:
create procedure myProcedure()
begin
declare exit handler for ANYTHING_WRONG_THAT_CAN_BE_CAUGHT_WARNINGS_INCLUDED
begin
rollback;
RE_THROW THE_THING_THAT_WAS_CAUGHT;
end;
start transaction;
-- do some stuff
commit;
end; //
La razón es que quiero forzar una reversión de un error o advertencia, pero dejar que el cliente decida qué hacer con el error específico.
Las áreas de mayúsculas son las porciones donde no sé qué poner.
¡Gracias por cualquier ayuda!
Editar -------
Desde entonces, aprendí que no es posible hacer lo que he pedido: ''(.
En cambio, tengo un solo error para todo lo que sale mal y usé el siguiente código:
declare exit handler for sqlwarning, sqlexception begin
rollback;
call error();
end;
(error () no existe)