在使用PREPARE stmt1_name动态执行sql的时候sql报错,为什么会导致死循环

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

具体执行以后 报什么错 能把执行时候的observer.log取一下么?