Оператор IF в MySQL приводит к ошибке 1064 - PullRequest
0 голосов
/ 22 ноября 2011

Я пытаюсь вложить оператор if в то, что в итоге станет рутиной.

SET @foo = (SELECT foo FROM table WHERE id = 1);
SET @bar = (SELECT bar FROM table WHERE id = 1);

IF @foo = @bar THEN SET @thisVar = 1;
ELSE SET @thisVar = 0;
END IF

SELECT @thisVar;

Но я получаю:

Код ошибки: 1064 Ошибка в синтаксисе SQL; проверить руководство, которое соответствует вашей версии сервера MySQL для права синтаксис для использования рядом с 'IF @foo = @bar THEN SET @thisVar = 1;' в строке 1)

Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

Не совсем уверен, что там, но почему ошибка говорит строку 1?Возможно, проблема в том, что вы фактически не выполняете всю процедуру.

Вы можете попробовать использовать функцию IF () следующим образом:

SET @thisVar = IF(@foo = @bar, 1, 0);

Я думаю, что это короче и чище дляпростые назначения if / else.

2 голосов
/ 22 ноября 2011

Завершение в процедуру выглядит нормально, когда все объявлено.Также удалены @'s.

CREATE PROCEDURE `DO_SOMETHING`()
BEGIN
    DECLARE _foo VARCHAR(20);
    DECLARE _bar VARCHAR(20);
    DECLARE _thisVar INT;

    SET _foo = 'test';
    SET _bar = 'test';

    IF _foo = _bar THEN SET _thisVar = 1;
    ELSE SET _thisVar = 0;
    END IF;

    SELECT _thisVar;
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...