给出: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 2
在 Child
失败,则事件日志必须包含
父级失败-错误消息
child failed-sql异常的错误消息、检查点编号、错误消息。
提前谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!