mysql SP中的IF/ELSE结构不工作
我已经编写了一个存储过程,将学生注册到一个表中。但在这样做之前,它会检查学生是否已经在场,如果已经在场,则不会插入mysql SP中的IF/ELSE结构不工作,mysql,stored-procedures,Mysql,Stored Procedures,我已经编写了一个存储过程,将学生注册到一个表中。但在这样做之前,它会检查学生是否已经在场,如果已经在场,则不会插入 DELIMITER // CREATE PROCEDURE test(IN sid varchar(6), IN us varchar(20), IN pswd varchar(20)) BEGIN declare temp varchar(20); declare x int; declare y int; set temp=(select username from login
DELIMITER //
CREATE PROCEDURE test(IN sid varchar(6), IN us varchar(20), IN pswd varchar(20))
BEGIN
declare temp varchar(20);
declare x int;
declare y int;
set temp=(select username from login_student where s_id=sid);
IF(temp == NULL)
THEN insert into login_student values(sid, us, pswd);
ELSEIF (temp != NULL)
THEN set x=x+1; //have written it randomly
ELSE
set y=y+1; //have written it randomly
END IF;
END //
DELIMITER ;
登录\学生表架构定义为:
CREATE TABLE login_student
(s_id varchar(6),
username varchar(20),
password varchar(20)
);
它给了我一些语法错误,有人能指出错误吗?我看到两个问题:
为空
和不为空
,而不是==NULL
和!=空
--
而不是/
NULL
要么是notnull
,因此如果需要,您可以将其简化为IF/ELSE
我建议使用SELECT。。。进入
而不是设置,以设置温度值
总而言之:
DELIMITER //
DROP PROCEDURE IF EXISTS test //
CREATE PROCEDURE test(IN sid varchar(6), IN us varchar(20), IN pswd varchar(20))
BEGIN
declare temp varchar(20);
declare x int;
declare y int;
select username into temp from login_student where s_id=sid;
IF(temp IS NULL)
THEN insert into login_student values(sid, us, pswd);
ELSEIF (temp IS NOT NULL)
THEN set x=x+1; -- have written it randomly
ELSE
set y=y+1; -- have written it randomly
END IF;
END //
DELIMITER ;
获取错误的文本会很好,但我认为应该是:
IF(temp IS NULL)
THEN insert into login_student values(sid, us, pswd);
ELSEIF (temp IS NOT NULL)
THEN set x=x+1; //have written it randomly
ELSE
set y=y+1; //have written it randomly
END IF;
完美的谢谢:)