您好 我是非常非常新的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网站不是特别用户友好。
干杯
答案 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
做任何事情。您可能需要将其声明为OUT
或INOUT
,具体取决于您要对其执行的操作。我没有使用存储过程的返回值的经验。