首页 > 解决方案 > 如何从存储过程发出 00000(成功)的 sqlstate 信号?

问题描述

我希望我的迁移过程在适当的时候返回标准的 sqlstate 代码。成功的标准代码是“00000”,但是当我发出这个 sqlstate 信号时,我收到以下错误:

Error Code: 1407. Bad SQLSTATE: '00000'

这是它抱怨的代码。如果我将状态更改为 01000,它会起作用,所以这不是我的语法。

signal sqlstate '00000' set message_text = '::SUCCESS::'

标签: mysqlstored-procedures

解决方案


根据文档:

https://dev.mysql.com/doc/refman/5.5/en/signal.html

在以下描述中,“未处理”表示没有使用 DECLARE ... HANDLER 定义已发出信号的 SQLSTATE 值的处理程序。

Class = '00' (success)

Illegal. SQLSTATE values that begin with '00' indicate success and are not valid for SIGNAL.

换句话说,您只能使用“信号”来返回错误条件。 调用信号意味着“成功”。

signal sqlstate '12345'
    set message_text = '::SOME CUSTOM ERROR::'

推荐阅读