Я полагаю, что в настоящее время в 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