触发器和存储过程的调试始终都是一个大问题,现有一个较简洁的方法,就是创建一张temp表,在相应的点网temp表插入相应的数据,通过temp表中的数据就可以知道问题大概在什么地方。
create trigger traceProcess
AFTER INSERT ON traceinfo
FOR EACH ROW
BEGIN
DECLARE t_step INT;
DECLARE t_name VARCHAR(255);
DECLARE t_processid INT;
DECLARE done int DEFAULT 0;
DECLARE productserialprocess cursor for (SELECT id, craftsname,step FROM processing where PRODUCTSERIALID = new.PRODUCTSERIALID);
DECLARE CONTINUE HANDLER FOR NOT found SET done = 1;
OPEN productserialprocess;
flag_while: while done=0 do
FETCH productserialprocess INTO t_processid, t_name, t_step;
if done=1 then leave flag_while ; end if ;
insert into temp (content) values("loop DATA.");
insert into temp (content) values(t_name);
INSERT INTO trace_process(TRACEID, PROCESSID, STEP,PROCESSNAME) values (new.id, t_processid, t_step,t_name);
END while flag_while;
CLOSE productserialprocess;
END
网友评论