MySQL存储过程错误处理

我相信现在MySQL中没有什么可以访问MySQL存储过程中最后执行的语句的SQLSTATE.这意味着当在存储过程中引发通用SQLException时,很难/不可能导出错误的确切属性.

有没有人有解决方法来导出MySQL存储过程中的错误的SQLSTATE,它不涉及为每个可能的SQLSTATE声明处理程序?

例如 – 假设我正在尝试返回一个超出在此BEGIN …. END块中发生的通用“SQLException”的error_status:

DELIMITER $$

CREATE PROCEDURE `myProcedure`(OUT o_error_status varchar(50))
MY_BLOCK: BEGIN

 DECLARE EXIT handler for 1062 set o_error_status := "Duplicate entry in table";
 DECLARE EXIT handler for 1048 set o_error_status := "Trying to populate a non-null column with null value"; 
-- declare handlers ad nauseum here....

 DECLARE EXIT handler for sqlexception set o_error_status:= "Generic SQLException. You'll just have to figure out the SQLSTATE yourself...." ;

-- Procedure logic that might error to follow here...

END MY_BLOCK$$

任何提示?

PS我正在运行MySQL 5.1.49

最佳答案

转载注明原文:MySQL存储过程错误处理 - 代码日志