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 に答える