我有以下mysql代码:
DELIMITER $$
CREATE FUNCTION durationInMinutes(id INT)
RETURNS INT DETERMINISTIC
BEGIN
DECLARE Minutes INT;
SET Minutes =
(SELECT TIME_TO_SEC(TIMEDIFF(timeDeparture, timeArrival)) FROM AirRoute
WHERE pk_id = id) / 60;
RETURN Minutes;
END$$
DELIMITER;
基本上,这个函数以分钟为单位计算飞行的持续时间。参数是航班的id。但是由于某些原因,这个函数总是返回null。我甚至检查了这个:
SELECT (SELECT TIME_TO_SEC(TIMEDIFF(timeDeparture, timeArrival)) FROM AirRoute
WHERE pk_id = 925) / 60;
如果我输入id=925,它会返回正确的答案,因此return语句可能有问题。
2条答案
按热度按时间swvgeqrz1#
好吧,我解决了。这是我更正的代码:
不过,我真的不明白为什么不能使用临时变量。
jfgube3f2#
我怀疑有一个专栏叫
id
在table上。我总是以一种区别于列名的方式命名参数和局部变量: