简体   繁体   English

SQL 代码中的语法错误,登录存储过程

[英]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.

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