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

时间:2015-04-28 16:55:39

标签: mysql stored-procedures error-handling

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

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

我尝试使用concat()并且没有工作。

1 个答案:

答案 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;