【发布时间】:2012-08-31 04:10:02
【问题描述】:
我正在使用 MySQL 5.5。
要在 MySQL 5.6 上获取异常消息,请使用 GET DIAGNOSTIC 函数。 MySQL 5.5 有没有类似的功能,..?
我正在做的项目已经在使用 MySQL 5.5 版本了。
【问题讨论】:
标签: mysql stored-procedures exception-handling
我正在使用 MySQL 5.5。
要在 MySQL 5.6 上获取异常消息,请使用 GET DIAGNOSTIC 函数。 MySQL 5.5 有没有类似的功能,..?
我正在做的项目已经在使用 MySQL 5.5 版本了。
【问题讨论】:
标签: mysql stored-procedures exception-handling
您可以尝试使用SHOW ERROR 和SHOW WARNING。要查看最后一个错误或警告,您可以将其用作:
SHOW ERRORS LIMIT 1 -- for SQL-state > 2
SHOW WARNINGS LIMIT 1 -- for SQL-state 1,2
为了防止列出每个错误,您可以像这样处理一类 SQL 错误:
SQLWARNING 是开头的 SQLSTATE 值类的简写 与“01”。
NOT FOUND 是开头的 SQLSTATE 值类的简写 与“02”。这仅在游标的上下文中相关并且是 用于控制游标到达数据末尾时发生的情况 放。如果没有更多行可用,则会出现无数据条件 SQLSTATE 值为 02000。要检测这种情况,可以设置一个 它的处理程序(或未找到条件)。一个例子显示在 第 12.7.5 节,“游标”。这种情况也发生在 SELECT ... INTO var_list 语句不检索任何行。
SQLEXCEPTION 是 SQLSTATE 值类的简写,它不 以“00”、“01”或“02”开头。
所以要处理异常,你只需要:
DECLARE EXIT HANDLER FOR SQLSTATE SQLEXCEPTION .....;
链接:
【讨论】:
SHOW ERRORS 语法放在DECLARE EXIT HANDLER FOR SQLEXCEPTION 里面是不是错了,.?
DECLARE EXIT HANDLER FOR SQLEXCEPTION 中包含SHOW ERROR。 SHOW ERROR 可以独立使用。只需将其包含在您的程序中即可。
show errors之前有一个rollback。