Проблема с MySql Routine

У меня возникла проблема с выполнением процедуры MySql.

Вот код:

DELIMITER '$$';
CREATE PROCEDURE User.Login(IN UserName CHAR(32), IN PWord CHAR(32))
BEGIN
Select `userID`, `userType`, `userMainEmail`, `groupID`
    From `at_users`
    Where `userName` = UserName And `userPass` = PWord
    LIMIT 1
FOR UPDATE;

    Update `at_users`
    Set `lastLoginAt` = now()
    Where `userName` = UserName And `userPass` = PWord;
END$$

То, что он должен сделать, это простая задача входа в систему, которая выполняется практически везде... получить запись пользователя, а затем обновить таблицу с помощью now()

Что я получаю при создании этого:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your     MySQL server version for the right syntax to use near '' at line 12

Строка 12 - это строка перед END$$

Да, все поля и таблицы существуют.:)

РЕДАКТИРОВАТЬ: НОВЫЙ КОД

DELIMITER //;
CREATE PROCEDURE User.Login(IN UserName CHAR(32), IN PWord CHAR(32))
BEGIN
Select `userID`, `userType`, `userMainEmail`, `groupID`
    From `at_users`
    Where `userName` = UserName And `userPass` = PWord
    LIMIT 1
FOR UPDATE;

    Update `at_users`
    Set `lastLoginAt` = now()
    Where `userName` = UserName And `userPass` = PWord;
END//
DELIMITER ;

Я пытаюсь этот точный код из командной строки, после входа в систему и выбора подходящей базы данных для использования.

После последней строки 'DELIMITER;' ничего не происходит и я остаюсь на -> линии

1 ответ

Решение

Понял.

Вот код, который мне пришлось использовать:

DELIMITER //
CREATE PROCEDURE UserLogin(IN UserName CHAR(32), IN PWord CHAR(32))
    BEGIN
        Select `userID`, `userType`, `userMainEmail`, `groupID`
        From `at_users`
        Where `userName` = UserName And `userPass` = PWord
        LIMIT 1
        FOR UPDATE;

        Update `at_users`
        Set `lastLoginAt` = now()
        Where `userName` = UserName And `userPass` = PWord;
    END//
DELIMITER ;
Другие вопросы по тегам