我们有一个关于MySQL中返回错误整数值的函数的问题。我们已经检查了“booked_passeters”是否包含正确的值0,并且当移除该变量时,它可以正常工作,也就是说只返回整数40。但是,当我们试图从它中减去“booked_passeters”(最终仍应返回40)时,它就不起作用了。
包括下面的代码。
提前道谢!:-)
CREATE FUNCTION calculateFreeSeats(flightnumber INT)
RETURNS INT
NOT DETERMINISTIC
BEGIN
DECLARE booked_passengers INT;
SELECT BOOKED_PASSENGERS INTO booked_passengers FROM FLIGHT WHERE (flightnumber = NR);
RETURN (40-booked_passengers);
END $$
当列名和局部变量名相互干扰并且没有表别名时,则首选变量。因此select booked_passeters...
选择的是变量值,而不是列值。使用
CREATE FUNCTION calculateFreeSeats(flightnumber INT)
RETURNS INT
READS SQL DATA
BEGIN
DECLARE booked_passengers INT;
SELECT FLIGHT.BOOKED_PASSENGERS INTO booked_passengers FROM FLIGHT WHERE (flightnumber = NR);
RETURN (40-booked_passengers);
END $$
从另一个方面来看,变量的使用显然是过剩的:
CREATE FUNCTION calculateFreeSeats(flightnumber INT)
RETURNS INT
READS SQL DATA
RETURN (SELECT 40 - BOOKED_PASSENGERS FROM FLIGHT WHERE flightnumber = NR LIMIT 1);