[英]Syntax Error in SQL Code, Login Stored Procedure
I'm writing a login stored procedure:我正在编写一个登录存储过程:
CREATE PROCEDURE `Login` (in var_login INT, in var_username varchar(45), in var_password varchar(45), out var_role INT)
BEGIN
declare var_user_role ENUM('PersonaleAmministrativo', 'PersonaleSegreteria', 'Insegnanti', 'Allievo');
select `Ruolo`
from User
where `Username` = var_username
and `Password` = md5(var_password);
insert into var_user_role
if var_user_role = 'PersonaleAmministrativo' then
set var_role = 1;
elseif var_user_role = 'PersonaleSegreteria' then
set var_role = 2;
elseif var_user_role = 'Insegnanti' then
set var_role = 3;
elseif var_user_role = 'Allievo' then
set var_role = 4;
else
set var_role = 5;
end if;
END
CREATE PROCEDURE `Login` (in var_login INT, in var_username varchar(45), in var_password varchar(45), out var_role INT)
BEGIN
declare var_user_role ENUM('PersonaleAmministrativo', 'PersonaleSegreteria', 'Insegnanti', 'Allievo');
select `Ruolo`
from User
where `Username` = var_username
and `Password` = md5(var_password);
insert into var_user_role
if var_user_role = 'PersonaleAmministrativo' then
set var_role = 1;
elseif var_user_role = 'PersonaleSegreteria' then
set var_role = 2;
elseif var_user_role = 'Insegnanti' then
set var_role = 3;
elseif var_user_role = 'Allievo' then
set var_role = 4;
else
set var_role = 5;
end if;
END
but on line 9, it always get me an error但在第 9 行,它总是让我出错
"if is not valid at this position, expecting PARTITION, SET, SELECT, TABLE, VALUES"
“如果在此位置无效,则需要 PARTITION、SET、SELECT、TABLE、VALUES”
pls help请帮忙
You cannot use a flow control statement (if..end if) in an Insert as an alternative and assuming your table has 1 column (which your code implies) Example of how to use case in insert (with select)您不能在 Insert 中使用流控制语句 (if..end if) 作为替代方案,并假设您的表有 1 列(您的代码暗示)如何在插入中使用 case(使用选择)的示例
drop table if exists t;
create table t(role varchar(20));
set @var_role = 1;
insert into t
select
case when @var_role = 1 then
'abs'
else 'bbb'
end
;
select * from t;
+------+
| role |
+------+
| abs |
+------+
1 row in set (0.001 sec)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.