0

我在制作 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 ;' 之后 什么都没有发生,我留在 -> 线

4

1 回答 1

0

知道了。

这是我最终不得不使用的代码:

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 ;
于 2012-10-26T16:01:16.760 回答