Обратите внимание, что первый курсор получает 3 результата, а когда я вставляю, он вставляет только 1. Раньше, когда у меня не было открытых curs2, он работал нормально, но теперь нет.Возможно, я пропустил некоторые с переменными done и done2, так как я пишу хранимую процедуру через долгое время.Пожалуйста, посмотрите, можете ли вы найти что-то не так.Спасибо
BLOCK1: begin
declare done INT DEFAULT FALSE;
declare gid BIGINT;
declare activity_name VARCHAR(255) ;
declare type_1 VARCHAR(255) ;
declare shop_activity_id BIGINT;
declare curs CURSOR for select id, activityName, `Type`, shopActivityId from gantttask where `Type` = 'Project';
open curs;
LOOP1: loop
fetch curs into gid, activity_name, type_1, shop_activity_id;
if done then
leave LOOP1;
end if;
insert into gantttask_result VALUES (gid, activity_name, type_1, shop_activity_id);
BLOCK2: begin
declare done2 INT DEFAULT FALSE;
declare gid2 BIGINT;
declare activity_name2 VARCHAR(255) ;
declare type_2 VARCHAR(255) ;
declare shop_activity_id2 BIGINT;
declare curs2 CURSOR for select id, activityName, `Type`, shopActivityId from gantttask where `Type` != 'Project' and shopActivityId = shop_activity_id order by id;
open curs2;
LOOP2: loop
fetch curs2 into gid2, activity_name2, type_2, shop_activity_id2;
if done2 then
leave LOOP2;
end if;
end loop LOOP2;
close curs2;
end BLOCK2;
end loop LOOP1;
close curs;
end BLOCK1