【问题标题】:Why my function is not returning a value using another function as input?为什么我的函数没有使用另一个函数作为输入返回值?
【发布时间】:2019-01-10 22:15:49
【问题描述】:

我写了两个函数。第一个使用选择查询并返回一个值。虽然我的第二个函数使用第一个函数的返回值作为输入,并且在某些操作之后应该返回它自己的值。虽然我收到“OK”消息但没有得到任何输出

DELIMITER //
DROP FUNCTION IF EXISTS walkerCubicAreaWeight;
CREATE FUNCTION walkerCubicAreaWeight (WType1 CHAR(5))
RETURNS DECIMAL(5,2)

BEGIN 
DECLARE Cubic_Area_Weight  FLOAT;
SELECT Weight INTO @A FROM imperial_walker_type WHERE WType = WType1;
SELECT Height INTO @B FROM imperial_walker_type WHERE WType = WType1;
SELECT Length INTO @C FROM imperial_walker_type WHERE WType = WType1;
SELECT Width INTO @D FROM imperial_walker_type WHERE WType = WType1;

SET Cubic_Area_Weight = @A/(@B*@C*@D) ;
RETURN Cubic_Area_Weight;
END //

DELIMITER ;

功能2

DELIMITER //
DROP FUNCTION IF EXISTS walkerFuelCapacity;
CREATE FUNCTION walkerFuelCapacity (WType1 varCHAR(20))
RETURNS DECIMAL(10,2)

BEGIN 
DECLARE Walker_Fuel_Capacity FLOAT;
SELECT OpRange INTO @E FROM imperial_walker_type WHERE WType = WType1;
SET Walker_Fuel_Capacity = walkerCubicAreaWeight(WType1) *@E ;
RETURN Walker_Fuel_Capacity;
END  //

DELIMITER ;

我的第一个函数返回值 0.40。在第二个函数中,它应该使用 0.40 并将其与 oprange 相乘(在本例中为 720)并应返回 288。但是我收到消息 OK 并且没有值

【问题讨论】:

  • 您能否添加执行此操作的方式(例如,是什么给了您“OK”消息)?
  • 我在 SELECT 查询中调用 walkerFuelCapacity 函数。比如下面这张。 - 从 Imperial_walker_type 中选择 count(*),walkerFuelCapacity('AT-AT')

标签: mysql function


【解决方案1】:

我设法得到了上述问题的答案。

以上两个函数是使用游标的存储过程的一部分。我试图在单独的查询中运行这些函数,即(在存储过程之外),因此第二个函数没有返回任何结果,但是在存储过程中我得到了我想要的结果。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-18
    • 2020-10-04
    • 2012-09-07
    • 1970-01-01
    • 2016-08-26
    • 2018-01-27
    相关资源
    最近更新 更多