我不明白为什么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。
1条答案
按热度按时间dw1jzc5e1#
您应该将程序参数命名为与数据行名称不同的名称。Column names are case-insensitive。
现在,您的过程有一个具有以下条件的查询:
它的计算结果为
true AND true
,因为将列与其自身进行比较必定为true(除非该列为NULL)。因此,使用
LIMIT 1
时,查询会传回第一个数据列,其中两个数据行都不是NULL。