Я работаю над процедурой, которая копирует некоторые данные в текстовый файл с использованием двух подготовленных операторов (@aux1
и @aux2
). Затем таблица, в которую копируется информация, получает все ее строки.
Проблема в том, что когда я выполняю процедуру, используя call copyIntoFile()
, я получаю сообщение об ошибке.
ПРОЦЕДУРА
delimiter !!
drop procedure if exists copyIntoFile !!
create procedure copyIntoFile()
begin
declare path varchar(255);
set path = concat("'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/", curdate(), ".txt'");
set @aux1 = concat("select * from movie_modification where modified = true into outfile ", path,
" fields terminated by ';' lines starting by 'Edit: ' lines terminated by '\n';");
prepare stmt1 from @aux1;
execute stmt1;
deallocate prepare stmt1;
set @aux2 = concat("select * from movie_modification where modified = false into outfile ", path,
" fields terminated by ';' lines starting by 'New: ' lines terminated by '\n';");
prepare stmt2 from @aux2;
execute stmt2;
deallocate prepare stmt2;
delete from movie_modification;
end !!
delimiter ;
ОШИБКА (при выполнении процедуры)
Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей MySQL версии сервера, на предмет правильного синтаксиса для использования рядом с «строками, оканчивающимися на« »в строке 1
Как видите, ошибка возникает около lines terminated by
(в строке 1). Так что теперь мне интересно, могу ли я использовать lines terminated by
после lines starting by
или только одно из этих утверждений принимается в каждом запросе.
Что не так?