mySQL创建过程错误+一般mysql帮助

时间:2010-10-29 10:44:13

标签: mysql

您好 我是非常非常新的MySQL,并想知道是否有人可以帮助我。 我正在尝试为我的数据库构建一个过程,并使用以下代码。

CREATE PROCEDURE `createuser`(username VARCHAR(100), password VARCHAR(100), email VARCHAR(100)) BEGIN

DECLare returnValue int;

IF EXISTS(SELECT 'True' FROM User_Table WHERE(User_Username = username OR User_Email = email))  
    BEGIN     
        SET returnValue = 0;
    END; 
ELSE
    BEGIN
       SET returnValue = 1;
       INSERT into User_Table(User_Username, User_Password,User_Email) VALUES(username, password,email) 
    END; END;

我在if语句后的BEGIN上收到错误。错误是“语法接近”BEGIN SET returnvalue = 0;结束;

如果我在mysql中正确使用IF语句,请告诉我。它似乎在MSSql服务器上正常工作,但在Mysql上却没有。

是否有可能指出我对这种类型的一些好教程的方向,因为主要的MYSQL网站不是特别用户友好。

干杯

1 个答案:

答案 0 :(得分:0)

而不是

IF statement
    BEGIN
        commands;
    END
ELSE
    BEGIN
        commands;
    END

使用

IF statement THEN
    commands;
ELSE
    commands;
END IF;

以下是我将如何编写您的程序(更改可能是化妆品更改和实际更改的混合;建议尝试找出哪些是哪些)

CREATE PROCEDURE `createuser` ( IN username VARCHAR(100),
                                IN password VARCHAR(100),
                                IN email VARCHAR(100)
                                )
BEGIN
    DECLARE returnValue INT;
    IF EXISTS (
        SELECT 1
        FROM User_Table
        WHERE User_Username = username OR User_Email = email
    ) THEN
        SET returnValue = 0;
    ELSE
        SET returnValue = 1;
        INSERT INTO User_Table
        (User_Username, User_Password, User_Email)
        VALUES
        (username, password, email);
    END IF;
END;

您似乎没有对变量returnValue做任何事情。您可能需要将其声明为OUTINOUT,具体取决于您要对其执行的操作。我没有使用存储过程的返回值的经验。