mysql - SQL 代码中的语法错误,登录存储过程
问题描述
我正在编写一个登录存储过程:
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
但在第 9 行,它总是给我一个错误
“如果在此位置无效,则需要 PARTITION、SET、SELECT、TABLE、VALUES”
请帮忙
解决方案
您不能在插入中使用流控制语句(if..end if)作为替代方案,并假设您的表有 1 列(您的代码暗示)如何在插入中使用案例的示例(带选择)
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)
推荐阅读
- go - golang 使用 ssh 连接到 ssh 并打印错误异常
- javascript - Googlemap未显示在ajax加载页面中
- bash - gzip 在多核上使用 pv 进度条
- ios - 苹果 apns 通知被乱序传递。正在发送一个先前的推送通知,而不是当前的
- django - Django 2.0 - 当我们有多个数据库时,如何处理只对一个数据库进行测试?
- python - 进程池中进程之间共享的类属性和内存?
- python - numpy 中的通用函数概念和符号
- braintree - 无法为 Braintree 示例设置快速测试
- html - IE11 中作为全局变量的表单元素 ID
- sql - PLSQL 缺少表达式