我正在使用SIGNAL编写MySQL存储过程中的错误处理。我想参数化错误消息,使其更有帮助。例如
IF vMyVariable IS NULL THEN
SIGNAL SQLSTATE VALUE '45006'
SET MESSAGE_TEXT = ('Found null variable in iteration' || vId);
END IF;
我尝试使用concat()并且没有工作。
答案 0 :(得分:2)
参见https://dev.mysql.com/doc/refman/5.5/en/signal.html
特别是关于simple_value_specification
使用SET分配属性时,不能使用任意表达式,如:
SIGNAL SQLSTATE VALUE '45006' SET MESSAGE_TEXT = <sorry, no arbitrary expressions here>;
但是,局部变量是simple_value_specification
,因此以下内容可行:
DECLARE my_message_text VARCHAR(64);
my_message_text := <anything you want>;
SIGNAL SQLSTATE VALUE '45006' SET MESSAGE_TEXT = my_message_text;