2017-01-28 5 views
1

Я пытаюсь выяснить, как выбросить ошибку с отформатированным сообщением об ошибке в MySQL (5.7).Сообщение об ошибке форматирования в ошибке MySQL

// SOME PROCEDURE 
begin 
declare something INT; 
start transaction; 
    call getsomething(something); // sets something to data 
    if something is NULL then 
     rollback; 
     SIGNAL SQLSTATE '45000' 
      SET MESSAGE_TEXT = 'Something %d not found!', MYSQL_ERRNO = 1001; 
    end if; 
commit; 
end 

Как я могу использовать переменную «что-то» при создании сообщения об ошибке?

+1

Mybe, которые помогают https://dev.mysql.com/doc/refman/5.5/en/signal.html – Sami

ответ

1

Как насчет CONCAT() и локальной переменной для хранения сообщения?

SET MESSAGE_TEXT = CONCAT(something, 'not found!'); 

working example

+0

Уже пробовал, не работает (незаконный синтаксис). – Ernio

1
// SOME PROCEDURE 
begin 
declare something INT; 
declare error_msg VARCHAR(255); 
start transaction; 
    call getsomething(something); // sets something to data 
    if something is NULL then 
     rollback; 
     set error_msg = CONCAT('Something not found!', something); 
     SIGNAL SQLSTATE '45000' 
      SET MESSAGE_TEXT = error_msg, MYSQL_ERRNO = 1001; 
    end if; 
commit; 
end 

После @Samis комментарий и повторить попытку с помощью CONCAT - выше работ.

+0

@Emio Я редактировал свой ответ (y) – TRiNE