Хранимая процедура MySQL: что я делаю не так?

#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
//
  

НЕ ПЫТАЙТЕСЬ ВЕРНУТЬ РАЗДЕЛИТЕЛЬ

Приветствуется правильный способ сделать от экспертов, потому что я не уверен, что это правильный способ ….. но я чувствую, что отсутствие разделителя по умолчанию для ПРОЦЕДУРЫ СОЗДАНИЯ неправильно.