#mysql #stored-procedures
#mysql #хранимые процедуры
Вопрос:
Что не так в следующем коде (пожалуйста, простите меня за очень простой вопрос)
Код ошибки: 1064. У вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с «в строке 3
CREATE PROCEDURE `getCleanData` ()
BEGIN
replace into CLEAN_TBL SELECT mycolumn FROM DIRTY_TBL;
END;
Ответ №1:
Вам нужно изменить РАЗДЕЛИТЕЛЬ на что-то другое, отличное от значения по умолчанию ;
.
РАЗДЕЛИТЕЛЬ указывает, когда заканчивается команда. По умолчанию разделителем является ;
. Поскольку сама процедура использует ;
в своем синтаксисе (конец инструкции), вам нужно изменить РАЗДЕЛИТЕЛЬ на что-то другое, чтобы был выполнен полный код процедуры.
Комментарии:
1. Все еще не уверен, почему ожидается изменение РАЗДЕЛИТЕЛЯ…. когда пользователь использует ПРОЦЕДУРУ CREATE …. разве не очевидно, что он / она пытается…
Ответ №2:
Шаг 01: измените разделитель сервера —> DELIMITER //
Шаг 02: создайте свою процедуру с новым разделителем, который вы использовали на шаге 01
CREATE PROCEDURE `getCleanData` ()
BEGIN
replace into CLEAN_TBL SELECT mycolumn FROM DIRTY_TBL;
END
//
НЕ ПЫТАЙТЕСЬ ВЕРНУТЬ РАЗДЕЛИТЕЛЬ
Приветствуется правильный способ сделать от экспертов, потому что я не уверен, что это правильный способ ….. но я чувствую, что отсутствие разделителя по умолчанию для ПРОЦЕДУРЫ СОЗДАНИЯ неправильно.