当前位置: 首页 > 知识库问答 >
问题:

MySQL:函数未返回正确的整数

燕刚毅
2023-03-14

我们有一个关于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 $$

共有1个答案

朱起运
2023-03-14

当列名和局部变量名相互干扰并且没有表别名时,则首选变量。因此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);
 类似资料:
  • 意识到递归是我的弱点之一后,我找到了一个网站,迫使你递归地解决简单问题(https://codestepbystep.com/problem/view/cpp/recursion/digitsSorted?problemsetid=15) 我坚持的一个(digitalsSorted,数字5)如下:调用一个传递数字作为参数的函数。如果该数字中的数字按递增顺序排序,则函数返回True,否则返回Fals

  • 问题内容: 我使用mysql 5.7 我想将联接表的结果串联到单列中。我使用包裹在函数中的函数。这是查询 列包含来自联接表的数据。数据已正确检索,但问题是列未转换为正确的JSON。 如您所见,最后有点“切”。 我也尝试过,但是现在它不能转换为正确的数组。它看起来像字符串太大,不适合列。有办法解决吗? 更新 问题必须出在不适合列的st大小中。我尝试从联接表中选择较少的列,并且它可以正常工作。也许有一

  • 问题内容: 我有一个存储过程,它检查用户是否已经存在,无论用于电子邮件的输入是什么,它随数据库的第一行一起返回。如果我手动运行select语句,我将得到正确的结果。有什么建议吗? 问题答案: 您的问题无疑在这里: 白衣 您的参数名称与列名称相同。这 可 实际工作,但规则使它这样做可能是怪异。(我认为,如果您更改引号,它可能会起作用)。 但是实际上,您应该做的是将参数重命名为其他名称:

  • 我很清楚关于这个话题有多个问题,但我就是弄不懂它的意思。问题似乎是没有将新值添加到@cacheable列表中。 调试完问题后,我发现问题似乎出在钥匙上。 下面是代码片段 所以当我调用save方法时,用于缓存的关键字是incrementing integer,或者1,2,3...但是当我尝试获取所有文档时,缓存使用SimpleKey[]作为键。如果我尝试为@Cacheable使用相同的键,我会得到S

  • 我有一个简单的程序,它允许用户在黑框中绘制白色像素。当用户单击蓝色按钮时,我希望我的程序遍历绘制框中的所有像素并将像素数据添加到数组中以供以后在另一个项目中使用。然而,即使用户在那里绘制了图像,它也只会为每个像素返回黑色。

  • 问题内容: 根据doc,日历set()为: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#set%28int,%20int,%20int%29 码: 输出: 为什么不是1月30日??? 问题答案: 1月是2月。2月30日更改为3月1日。您应该将月份设置为0。最好是使用Calendar中定义的常量: