高手帮忙看看这个存储过程很诡异的错
请看源码:
创建p_test_a 就会报错,但是如果把后面的 IF i_b='1' THEN 去掉 就不报错
高手帮忙解答下吧,为啥??
-- 创建表
DROP TABLE IF EXISTS test;
CREATE TABLE test (
`t_A` varchar(20) NOT NULL,
`t_B` varchar(20) DEFAULT NULL,
`t_C` varchar(20) DEFAULT NULL,
`t_D` varchar(20) DEFAULT NULL,
PRIMARY KEY (`t_A`)
);
-- 创建存储过程
DROP PROCEDURE IF EXISTS p_test_a;
CREATE PROCEDURE p_test_a
(i_a VARCHAR(20),
i_b VARCHAR(20))
BEGIN
DECLARE v_b VARCHAR(20);
SET v_b='b4';
IF v_a='1' THEN
BEGIN
UPDATE test SET t_A='a4' WHERE t_B=v_b;
END;
ELSE
BEGIN
INSERT INTO test VALUES ('a5','b5','c5','d5');
END;
END IF;
BEGIN
INSERT INTO test VALUES ('a6','b6','c6','d6');
END;
IF i_b='1' THEN
BEGIN
UPDATE test SET t_A='a4' WHERE t_B=v_b;
END;
ELSE
BEGIN
INSERT INTO test VALUES ('a7','b7','c7','d7');
END;
END IF;
END;
创建p_test_a 就会报错,但是如果把后面的 IF i_b='1' THEN 去掉 就不报错
DROP PROCEDURE IF EXISTS p_test_a;
CREATE PROCEDURE p_test_a
(i_a VARCHAR(20),
i_b VARCHAR(20))
BEGIN
DECLARE v_b VARCHAR(20);
SET v_b='b4';
IF v_a='1' THEN
BEGIN
UPDATE test SET t_A='a4' WHERE t_B=v_b;
END;
ELSE
BEGIN
INSERT INTO test VALUES ('a5','b5','c5','d5');
END;
END IF;
BEGIN
INSERT INTO test VALUES ('a6','b6','c6','d6');
END;
-- IF i_b='1' THEN
BEGIN
UPDATE test SET t_A='a4' WHERE t_B=v_b;
END;
-- ELSE
BEGIN
INSERT INTO test VALUES ('a7','b7','c7','d7');
END;
-- END IF;
END;
高手帮忙解答下吧,为啥??
...全文
相关推荐
浅谈SpringMVC HandlerInterceptor诡异问题排查
本文将主要介绍如何排查SpringMVC HandlerInterceptor中的诡异问题,解决问题的思路和方法,并对相关的源代码进行分析和解释。
诡异通道Chrome插件-crx插件
【诡异通道Chrome插件-crx插件】是一个专为Google Chrome浏览器设计的扩展程序,它支持英语和简体中文两种语言。
易语言诡异心理游戏
诡异心理游戏的"诡异"二字,暗示了游戏可能包含一些非传统或者出乎意料的设计,可能会运用到心理学中的认知偏误、预期管理、心理暗示等概念。
杭电1180解题报告 诡异的楼梯
### 一、问题背景杭电1180题“诡异的楼梯”涉及到的是一个迷宫游戏。玩家需要在迷宫中找到一条从起点到终点的路径。
CTabCtrl的诡异实例
在本文中,我们将深入探讨`CTabCtrl`的使用以及可能遇到的一些诡异实例。1.


