Comment attraper et renvoyer toutes les erreurs dans MySQL
Je n'arrive pas à trouver n'importe où comment attraper et renvoyer des erreurs ou des avertissements qui peuvent se produire dans une procédure.
Ce que je veux, c'est la syntaxe pour effectuer les opérations suivantes:
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 raison étant que je veux pour forcer un retour en arrière sur une erreur ou un avertissement, mais laisser le client décider quoi faire avec l'erreur spécifique.
Le all-cap zones sont les parties où je ne sais pas quoi mettre.
Merci pour toute aide!
Edit -------
J'ai appris depuis qu'il n'est pas possible de faire ce que j'ai demandé :'(.
La place, j'ai une erreur unique pour tout ce qui va mal et utilisé le code suivant:
declare exit handler for sqlwarning, sqlexception begin
rollback;
call error();
end;
(erreur() n'existe pas)
- Cette question serait de fournir une solution partielle: stackoverflow.com/questions/18858567/...
- pourquoi "partielle"? ce qu'il manque?
Vous devez vous connecter pour publier un commentaire.
Pour attraper toutes les exceptions SQL, utilisation:
SQLWARNINGS
peut être utilisé pour capturer des avertissements.À l'intérieur du gestionnaire d'exception, à augmenter l'erreur ou d'avertissement qui vient d'être pris, utilisation:
Consultez la documentation du RESIGNAL déclaration:
http://dev.mysql.com/doc/refman/5.5/en/resignal.html
Cette option est disponible depuis MySQL 5.5