13.6.7.9 条件处理限制
SIGNAL,RESIGNAL和GET DIAGNOSTICS不允许用作准备好的语句。例如,此语句无效:
PREPARE stmt1 FROM 'SIGNAL SQLSTATE "02000"';
类别'04'
中的SQLSTATE
值未得到特殊处理。它们的处理方式与其他 exception 相同。
在标准 SQL 中,第一个条件与为先前的 SQL 语句返回的SQLSTATE
值有关。在 MySQL 中,这不能保证,因此要获取主要错误,您不能这样做:
GET DIAGNOSTICS CONDITION 1 @errno = MYSQL_ERRNO;
相反,请执行以下操作:
GET DIAGNOSTICS @cno = NUMBER;
GET DIAGNOSTICS CONDITION @cno @errno = MYSQL_ERRNO;