具有异常处理的存储过程的检查点

hec6srdp  于 2021-06-24  发布在  Mysql
关注(0)|答案(0)|浏览(172)

给出:1。我有一个proc(parent)调用另一个proc(child),它包含多个操作,比如更新多个列,比如total\u visits、total\u revenue、total\u items\u selled等等。我有一个名为event\u log的表,表中有[proc\u name,start\u time,end\u time,exit\u status,error\u message]列,用于存储每个过程子级和父级的状态。
目标:实现一种基于检查点的方法来跟踪存储过程的执行,其中存储过程在成功完成任何过程/操作时不断更新检查点变量。它还必须更新事件日志表,以便记录存储过程的执行进度。
到目前为止我读到的: GET DIAGNOSTICS 文档
像这样的 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 2Child 失败,则事件日志必须包含
父级失败-错误消息
child failed-sql异常的错误消息、检查点编号、错误消息。
提前谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题