Я создаю хранимую процедуру, содержащую оператор удаления и использование курсора.Проблема в том, что я не могу использовать эти два вместе.
Вот отдельное MWE.Обратите внимание, что Блок 1 и Блок 2 могут выполняться отдельно (если я комментирую другой), но не вместе.
drop table if exists T1;
create table T1(f1 int, f2 int);
insert into T1 values(1, 1);
insert into T1 values(2, 2);
insert into T1 values(3, 3);
drop table if exists T2;
create table T2(f3 int, f4 int);
insert into T2 values(1, 11);
insert into T2 values(2, 22);
insert into T2 values(3, 33);
drop procedure if exists proc1;
DELIMITER //
CREATE PROCEDURE proc1(inputValue int)
BEGIN
declare i int;
declare cursorSize int;
declare anF1 int;
declare anF2 int;
-- Block 1 - Begin:
delete from T2 where f3 = inputValue;
-- Block 1 - End.
-- Block 2 - Begin:
declare cur1 cursor for
select f1, f2
from T1
where f1 <= inputValue;
open cur1;
select FOUND_ROWS() into cursorSize;
if (cursorSize > 0) then
set i = 0;
while i < cursorSize DO
fetch cur1 into anF1, anF2;
insert into T2 values(anF1, anF2);
set i = i + 1;
end while;
end if;
close cur1;
-- Block 2 - End.
END //
DELIMITER ;
call proc1(3);
Я получаю эту ошибку, если я раскомментирую оператор удаления в Блоке 1:
1064 - у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования около
'declare cur1 cursor for
select f1, f2
from T1
where f1 <=' at line 10
Пожалуйста, помогите мне решить проблему.