Обработка ошибок хранимой процедуры MySQL

я считаю, что в настоящее время в MySQL нет ничего, что позволяло бы получить доступ к SQLSTATE последнего выполненного оператора в хранимой процедуре MySQL. Это означает, что когда в хранимой процедуре возникает общее SQLException , трудно / невозможно определить точный характер ошибки.

Есть ли у кого-нибудь обходной путь для получения SQLSTATE ошибки в хранимой процедуре MySQL, которая не включает объявление обработчика для всех возможных SQLSTATE?

Например - представьте, что я пытаюсь вернуть error_status, который выходит за рамки общего «SQLException где-то в этом BEGIN .... END блоке» следующим образом:

DELIMITER $$

CREATE PROCEDURE `myProcedure`(OUT o_error_status varchar(50))
MY_BLOCK: BEGIN

 DECLARE EXIT handler for 1062 set o_error_status := "Duplicate entry in table";
 DECLARE EXIT handler for 1048 set o_error_status := "Trying to populate a non-null column with null value"; 
-- declare handlers ad nauseum here....

 DECLARE EXIT handler for sqlexception set o_error_status:= "Generic SQLException. You'll just have to figure out the SQLSTATE yourself...." ;

-- Procedure logic that might error to follow here...

END MY_BLOCK$$

Есть какие-нибудь советы?

PS Я использую MySQL 5.1.49

13
задан AAEM 5 May 2018 в 17:27
поделиться