如何参数化 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;
我正在使用 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;