Почему не просто, если ELSE Statement работает в mySql - PullRequest
1 голос
/ 28 ноября 2010

Я пытаюсь создать простую хранимую процедуру с оператором if else в SQLYog для базы данных mySql.Я не слишком знаком с синтаксисом mySql, поэтому я надеюсь, что это что-то простое, но я просто не понимаю, почему это не работает

CREATE PROCEDURE p(IN Number INT)

IF NUMBER = 1 THEN
SELECT * FROM tblProduct WHERE ProductID = Number
ELSE SELECT * FROM tblProduct WHERE ProductId = 2
END IF

Буду признателен, если кто-нибудь сможет мне помочь с этими скажи мне, где я иду не так.Спасибо за чтение.

Когда я пытаюсь выполнить, я получаю следующее:

Код ошибки: 1064 В синтаксисе SQL есть ошибка;обратитесь к руководству, соответствующему вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'ELSE SELECT * FROM tblProduct, где intProductId = 2 END IF' в строке 5

Ответы [ 3 ]

3 голосов
/ 28 ноября 2010

Операторы в MySQL разделяются точкой с запятой.Чтобы создать процедуры с ними, вы должны сделать небольшой трюк, подобный следующему:

DELIMITER //

CREATE PROCEDURE p(IN Number INT)
BEGIN
    IF NUMBER = 1 THEN
        SELECT * FROM tblProduct WHERE ProductID = Number;
    ELSE
        SELECT * FROM tblProduct WHERE ProductId = 2;
    END IF;
END //

DELIMITER ;

Проверьте документацию для if / else для дополнительной информации.

0 голосов
/ 21 сентября 2016

Помните, что оператор IF ELSE всегда используется в хранимой процедуре, триггеры не в запросе простого выбора. И ключевое слово ELSE OR IF всегда пишется в новой строке, а не перед запросом. Как ниже

Правильный синтаксис:

DELIMITER //

CREATE PROCEDURE NAME(IN Number INT)
BEGIN
    IF roll= 1 THEN
        SELECT * FROM table1 WHERE id = roll;
    ELSE
        SELECT * FROM table2 WHERE id = 2;
    END IF;
END //

DELIMITER ;

Неправильный синтаксис:

DELIMITER //

CREATE PROCEDURE NAME(IN Number INT)
BEGIN
    IF roll= 1 THEN  SELECT * FROM table1 WHERE id = roll;
    ELSE   SELECT * FROM table2 WHERE id = 2;
    END IF;
END //

DELIMITER ;
0 голосов
/ 28 ноября 2010

Тебе нужен; после ваших избранных заявлений. Вы также должны начать и закончить вокруг вашего тела процедуры. В руководстве приведено множество примеров точного синтаксиса процедур.

...