我一开始被这个问题给恶心到了!!!!!
我写了一个存储过程,在插入之前我想检查一下是否有这个类型的数据,如果有的话就输出报错信息,但是问题就出在这:
为了方便理解,我写了一个简化版的代码:
CREATE DEFINER=`root`@`localhost` PROCEDURE `text`()
BEGIN
#Routine body goes here...
DECLARE room_ID CHAR(4);
SET room_ID = 'I';
SELECT * FROM Guest_room WHERE room_ID = Room_ID;
END
我的表是这样的:
代码的意思就是查询有没有房间号为‘A004’的房间,然后输出出来,正常来说应该是不会输出的,但是我出现了下面这种情况:
它竟然把所有信息输出了出来!!!!!!
为什么??????我当时非常诧异,结果后来问了一些大佬,才知道了问题:
在MYSQL中,变量名是不区分大小写的!!!!!!!!!
可怜的我竟然被这个问题折磨了一个半小时!!!!
当我把程序改成这样的话:
CREATE DEFINER=`root`@`localhost` PROCEDURE `text`()
BEGIN
#Routine body goes here...
DECLARE roomID CHAR(4);
SET roomID = 'A004';
SELECT * FROM Guest_room WHERE roomID = Room_ID;
END
运行结果就正确了:
什么也没查到~~~
太坑人了!!