简体   繁体   English

MySQL-存储过程语法问题

[英]MySQL - Stored Procedures syntax issue

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

Hi, guys. 嗨,大家好。 I am an SQL Server user. 我是SQL Server用户。 Recently, I have just started out to learn about MySQL and its stored procedures(routines) writing. 最近,我刚刚开始学习MySQL及其存储过程(例程)的编写。 Can anyone points out what is the mistake that I have made that is causing the following error? 谁能指出我造成以下错误的错误是什么? Thank you in advance guys :) 预先谢谢你们:)

1064 - You have an error in your SQL syntax; 1064-您的SQL语法有误; check the manual that corresponds to your MySQL server version for the right syntax to use 查看与您的MySQL服务器版本相对应的手册以使用正确的语法

near 'BEGIN SET @ErrorCode = 0' at line 15 第15行的'BEGIN SET @ErrorCode = 0'附近

This might be what you want. 这可能就是您想要的。 The whole thing in a DELIMITER BLOCK, and some changes to the IF block (that had a few syntax errors). 整个内容位于DELIMITER BLOCK中,并且对IF块进行了一些更改(存在一些语法错误)。 Note, it now saves on my system. 注意,它现在保存在我的系统上。

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 ;

Related: What is the deal with DELIMITER . 相关: DELIMITER处理什么。

MySQL Manual Page on IF Syntax 关于IF语法的 MySQL手册页

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM