如何参数化 Mysql 存储过程中的错误

How to parametrize an error in Mysql stored procedure

我正在使用 SIGNAL 在 MySQL 存储过程中编写错误处理程序。我想参数化错误消息以使其更有帮助。例如

 IF vMyVariable IS NULL THEN
            SIGNAL SQLSTATE VALUE '45006'
                SET MESSAGE_TEXT = ('Found null variable in iteration' || vId); 
 END IF;

我尝试使用 concat() 但没有成功。

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;