我很困惑为什么MySQL Workbench对这个查询返回7(正确答案)
SELECT ScheduleLocationEventColorID
FROM schedulelocationeventcolor
WHERE ScheduleID = 1 AND LocationID = 1;
但是在存储过程中返回1(不正确)。
CREATE PROCEDURE `test`(
IN locationID INT,
IN scheduleID INT
)
BEGIN
DECLARE slecID INT;
SELECT ScheduleLocationEventColorID
INTO slecID
FROM schedulelocationeventcolor
WHERE ScheduleID = scheduleID AND LocationID = locationID
LIMIT 1;
SELECT slecID;
END
-- calling the stored procedure here:
CALL `test`(1, 1);
我尝试更改存储过程调用中的输入,但是我无法弄清楚为什么当结果应该是7时,我总是得到1。
应该使用与列名不同的名称来命名过程参数。列名不区分大小写。
现在你的过程有一个查询,条件是:
WHERE ScheduleID = ScheduleID AND LocationID = LocationID
其计算结果为true AND true
,因为将列与自身进行比较必然为真(除非该列为NULL)。
对于LIMIT 1
,查询返回两列都不是NULL的第一行。