首页 > 解决方案 > 带有异常处理的存储过程的检查点

问题描述

给定: 1. 我有一个 proc ( Parent ),它调用另一个 proc ( Child ),其中包含多个操作,例如更新多个列,例如 total_visits、total_revenue、total_items_sold 等。 2. 我有一个名为Event_Log的表,其中包含[proc_name, start_time, end_time, exit_status, error_message]用于存储每个过程ChildParent的状态。

目标:实现基于检查点的方法来跟踪存储过程的执行,其中在成功完成任何过程/操作时不断更新检查点变量。它还必须更新Event_Log表以记录存储过程执行的进度

到目前为止我读过的内容

  1. GET DIAGNOSTICS文件
  2. 类似的东西DECLARE CONTINUE/EXIT HANDLER FOR SQLEXCEPTION

查找要使用的示例代码:

drop procedure if exists Parent;
delimiter $$ 
CREATE PROCEDURE Parent(value INT)
BEGIN
/* some event logic*/
CALL Child(12);
/* some event logic*/
INSERT INTO Event_Log(info...)
END$$
DELIMITER;

drop procedure if exists Child;
delimiter $$ 
CREATE PROCEDURE Child(value INT)
BEGIN
/* ---- some event logic ------ 

checkpoint 1 :
operation 1 

checkpoint 2 :
operation 2

checkpoint 3 :
operation 3
*/

/* after execution of all the procs */
INSERT INTO Event_Log(info...)
END$$
DELIMITER;


CALL Parent(123);

因此,如果输入checkpoint 2失败Child,则 Event_Log 必须具有

  1. 父失败 - 错误消息
  2. Child failed - SQL 异常的错误消息、检查点编号、错误消息。

提前致谢。

标签: mysqlstored-proceduresexception-handlingautomation

解决方案


推荐阅读