CREATE DEFINER = root@% PROCEDURE Calculate_interface_data_task(IN v_years bigint,
IN v_zhouqi2 bigint,
IN v_task_id bigint,
IN v_exec_sql varchar(50))
MODIFIES SQL DATA
begin
DECLARE v_begin_date DATETIME;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
INSERT INTO auto_calculate_interface_log(`year`,`month`,task_id,`proc_name`,`error`,`js_begin_date`,`js_end_date`)
values(v_years,v_zhouqi2,v_task_id,concat('call ', v_exec_sql),concat('Error: ',v_exec_sql),v_begin_date,now());
BEGIN
SET v_begin_date=now();
select concat('call onnets_eval.',v_exec_sql,'(',v_years,',',v_zhouqi2,');') into @v_c_sql;
PREPARE stmt1_name FROM @v_c_sql;
EXECUTE stmt1_name;
DEALLOCATE PREPARE stmt1_name;
INSERT INTO auto_calculate_interface_log(`year`,`month`,task_id,`proc_name`,`error`,`time`,`js_begin_date`,`js_end_date`)
values(v_years,v_zhouqi2,v_task_id,@v_c_sql,'',TIMESTAMPDIFF(SECOND,v_begin_date,now()),v_begin_date,now());
END ;
end
在执行该存储过程 的时候 EXECUTE stmt1_name;语句报错会导致 stmt1_name死循环一直执行。有没有什么好的解决方案不然它死循环。
本人使用的是OceanBase社区版ceanbase-ce-4.6.0.0