Подтвердить что ты не робот

Ошибка MySQL: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом

У меня есть хранимая процедура:

CREATE PROCEDURE ProG()
  BEGIN
    SELECT * FROM `hs_hr_employee_leave_quota`;
  END

Но это дает ошибку:

#1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 3

Что означает ошибка? Что не так с строкой номер 2?

4b9b3361

Ответ 1

Вы должны изменить разделитель перед использованием триггеров, хранимых процедур и т.д.

delimiter //
create procedure ProG() 
begin 
SELECT * FROM hs_hr_employee_leave_quota;
end;//
delimiter ;

Ответ 2

Как узнать, что эта ошибка MySQL пытается сказать:

#1064 - You have an error in your SQL syntax;

В этой ошибке нет никаких подсказок. Вы должны дважды проверить все эти элементы, чтобы узнать, где ваша ошибка:

  • Вы опустили или включили лишний символ: [email protected]#$%^&*()-_=+[]{}\|;:'",<>/?
  • Неуместное, отсутствующее или ненужное ключевое слово: select, into или бесчисленные другие.
  • У вас есть символы Unicode, которые выглядят как ascii-символы в вашем запросе, но не распознаются.
  • Неправильные, отсутствующие или ненужные пробелы или новые строки между ключевыми словами.
  • Непревзойденные одинарные кавычки, двойные кавычки, скобки или фигурные скобки.

Уберите как можно больше от сломанного запроса, пока он не начнет работать. И затем используйте PostgreSQL в следующий раз, когда у вас есть синтаксическая система синтаксиса.

Ответ 3

Разделители, разделители...

Вам действительно нужны они, если в вашей процедуре есть несколько утверждений. (другими словами, у вас есть ; в вашем коде, а затем больше операторов/команд? Тогда вам нужно использовать разделители).

Для такой более простой rpocedure, как ваш, вы можете просто сделать:

CREATE PROCEDURE ProG()
  SELECT * FROM `hs_hr_employee_leave_quota`;

Ответ 4

Это может быть проблемой memmory для mysql попробуйте увеличить max_allowed_packet в my.ini