0
CREATE PROCEDURE `usp_GetUserValidation`

(IN `@Username` VARCHAR(255), 
 IN `@Password` VARCHAR(50), 
 OUT `@ErrorCode` INT)

    LANGUAGE SQL
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT 'To validate user login'
BEGIN

    IF EXISTS
    (SELECT UserID 
        FROM mt_User
        WHERE Username = `@Username`
        AND Password = PASSWORD(`@Password`))

        BEGIN
            SET `@ErrorCode` = 0;
        END

    ELSE
        SET `@ErrorCode` = 1;


    SELECT '@ErrorCode' AS res
END

こんにちは、みんな。私は SQL Server ユーザーです。最近、MySQL とそのストアド プロシージャ (ルーチン) の作成について学び始めました。次のエラーの原因となっている私が犯した間違いは何か、誰でも指摘できますか? よろしくお願いします:)

1064 - SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

15行目の「BEGIN SET @ErrorCode= 0」付近

4

1 に答える 1

1

これはあなたが望むものかもしれません。DELIMITER BLOCK 内の全体と、IF ブロックへのいくつかの変更 (いくつかの構文エラーがありました)。注意してください、それは今私のシステムに保存されています。

DELIMITER $$
CREATE PROCEDURE `usp_GetUserValidation`

(IN `@Username` VARCHAR(255), 
 IN `@Password` VARCHAR(50), 
 OUT `@ErrorCode` INT)

    LANGUAGE SQL
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT 'To validate user login'
BEGIN

    IF EXISTS
    (SELECT UserID 
        FROM mt_User
        WHERE Username = `@Username`
        AND Password = PASSWORD(`@Password`)) THEN

            SET `@ErrorCode` = 0;

    ELSE
        SET `@ErrorCode` = 1;
    END IF;


    SELECT '@ErrorCode' AS res;
END$$
DELIMITER ;

関連:DELIMITERとの取引は何ですか。

IF 構文に関する MySQL マニュアル ページ

于 2016-06-26T04:11:23.530 に答える