Проблема с 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 ;