У меня есть MySQL db, и я хочу написать запрос, содержащий инструкции IF ELSE. Первоначально я попытался использовать IF ELSE сам по себе, но после неоднократного отказа заставить его работать, я читал, что инструкции IF ELSE в MySQL должны быть внутри хранимых процедур. Однако я не могу создать хранимую процедуру без синтаксической ошибки. Вот очень простой пример:
DELIMITER //
CREATE OR REPLACE PROCEDURE getUsers()
BEGIN
SELECT * FROM users;
END //
DELIMITER ;
Я получаю следующее сообщение об ошибке:
ERROR 1064 (42000): у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с "PROCEDURE getUsers() BEGIN select * от пользователей; END 'в строке 1
Я прочитал множество других сообщений, связанных с этой проблемой, но ни одна из предложенных исправлений, похоже, не работает для моего случая (в частности, добавление разделителя). Что может быть причиной этой ошибки?
Забавно, после нескольких часов попыток понять это, мне довелось найти ответ сразу после публикации моего вопроса. Мне нужно было удалить CREATE OR REPLACE PROCEDURE getUsers()
и заменить его на
DROP DATABASE IF EXISTS getUsers;... CREATE PROCEDURE getUsers()