Enr*_*tez 10 mysql stored-procedures case-statement
我试图创建一个具有倍数的存储过程CASE STATEMENTS我有以下存储过程:
BEGIN
CASE @olds
WHEN 'emp' THEN
CASE @news
WHEN 'loc' THEN
UPDATE equipos SET pe=pe-1,pg=pg+1 WHERE id=@eqloc;
UPDATE equipos SET pe=pe-1,pp=pp+1 WHERE id=@eqvis;
UPDATE partidos SET `eqgan`=@news WHERE id=@mst;
UPDATE log_partidos SET `status`=@news WHERE `match`=@mst;
WHEN 'vis' THEN
UPDATE equipos SET pe=pe-1,pg=pg+1 WHERE id=@eqvis;
UPDATE equipos SET pe=pe-1,pp=pp+1 WHERE id=@eqloc;
UPDATE partidos SET `eqgan`=@news WHERE id=@mst;
UPDATE log_partidos SET `status`=@news WHERE `match`=@mst;
END CASE;
WHEN 'loc' THEN
CASE @news
WHEN 'emp' THEN
UPDATE equipos SET pe=pe+1,pg=pg-1 WHERE id=@eqloc;
UPDATE equipos SET pe=pe+1,pp=pp-1 WHERE id=@eqvis;
UPDATE partidos SET `eqgan`=@news WHERE id=@mst;
UPDATE log_partidos SET `status`=@news WHERE `match`=@mst;
WHEN 'vis' THEN
UPDATE equipos SET pp=pp-1,pg=pg+1 WHERE id=@eqvis;
UPDATE equipos SET pg=pg-1,pp=pp+1 WHERE id=@eqloc;
UPDATE partidos SET `eqgan`=@news WHERE id=@mst;
UPDATE log_partidos SET `status`=@news WHERE `match`=@mst;
END CASE;
WHEN 'vis' THEN
CASE @news
WHEN 'emp' THEN
UPDATE equipos SET pe=pe+1,pg=pg-1 WHERE id=@eqvis;
UPDATE equipos SET pe=pe+1,pp=pp-1 WHERE id=@eqloc;
UPDATE partidos SET `eqgan`=@news WHERE id=@mst;
UPDATE log_partidos SET `status`=@news WHERE `match`=@mst;
WHEN 'loc' THEN
UPDATE equipos SET pp=pp-1,pg=pg+1 WHERE id=@eqloc;
UPDATE equipos SET pg=pg-1,pp=pp+1 WHERE id=@eqvis;
UPDATE partidos SET `eqgan`=@news WHERE id=@mst;
UPDATE log_partidos SET `status`=@news WHERE `match`=@mst;
END CASE;
END CASE;
END
Run Code Online (Sandbox Code Playgroud)
每次我执行此程序时我得到以下错误是:"CASE语句未找到案例"我做错了什么?
Ell*_*ren 25
这是MySQL特有的问题.
在MySQL中,case必须始终具有有效匹配,因此是ELSE子句.
并且由于匹配后的语句不能为空,您可以填充空块,如下所示:
ELSE BEGIN END;
Run Code Online (Sandbox Code Playgroud)
因此,一个有效的案例将是,例如:
CASE @news
WHEN 'emp' THEN
UPDATE equipos SET pe=pe+1,pg=pg-1 WHERE id=@eqvis;
WHEN 'loc' THEN
UPDATE equipos SET pp=pp-1,pg=pg+1 WHERE id=@eqloc;
ELSE BEGIN END;
END CASE;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11933 次 |
| 最近记录: |