Mysql - получить значение ошибки - PullRequest
0 голосов
/ 27 августа 2018

Я работаю над MySQL 5.7.23 и пытаюсь зарегистрировать ошибку в моей хранимой процедуре Я сталкиваюсь с некоторыми трудностями, чтобы получить конкретную ошибку, чтобы записать ее в таблицу журнала. Я хотел бы сделать что-то вроде этого:

BEGIN
DECLARE v_error varchar(50);
DECLARE v_err_no varchar(50) ;
DECLARE EXIT HANDLER FOR SQLEXCEPTION 
BEGIN
set v_err_no= mysql_errno ;
#set v_error= mysql_sqlstate();

call pcd_log ('ERROR', v_err_no ); #my custom procedure to log
end;


insert into temp values (1);#some stuff that might give errors

end

но это не работает, как я могу получить значение ошибки (номер или описание) и поместить его в переменную?

Спасибо

1 Ответ

0 голосов
/ 27 августа 2018

Читать дальше https://dev.mysql.com/doc/refman/5.6/en/get-diagnostics.html

drop procedure if exists p;

delimiter $$
create procedure p()
BEGIN
DECLARE v_error varchar(50);
DECLARE v_err_no varchar(50) ;
DECLARE EXIT HANDLER FOR SQLEXCEPTION 
    BEGIN
    get diagnostics condition 1
     v_err_no = returned_sqlstate;

    #call pcd_log ('ERROR', v_err_no ); #my custom procedure to log

    select v_err_no;
end;


insert into t values ('zzz');#some stuff that might give errors

end $$

delimiter ;

call p();

+----------+
| v_err_no |
+----------+
| 22007    |
+----------+
1 row in set (0.00 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...