我无法在mysql中返回函数的值

时间:2014-03-15 13:52:18

标签: mysql function

CREATE FUNCTION `new_function` ()
RETURNS bigint
BEGIN

set  @Ingredient:= (select Ingredient_cost_ingredientID  
from menu_has_ingredient_cost,bill_details_has_menu
where bill_details_has_menu.Menu_ItemID=menu_has_ingredient_cost.Menu_ItemID) 

RETURN Ingredient ;

2 个答案:

答案 0 :(得分:1)

你应该

RETURN @Ingredient ;

还需要一个

END;
其他/替代变更的

建议

BEGIN
 DECLARE Ingredient BIGINT;

 select Ingredient_cost_ingredientID into Ingredient
 from 
    menu_has_ingredient_cost,
    bill_details_has_menu
 where 
    bill_details_has_menu.Menu_ItemID = 
     menu_has_ingredient_cost.Menu_ItemID;

 RETURN Ingredient;
END;

答案 1 :(得分:0)

除了Ravinder的更正,我还会:

  • WHERE中的加入替换为JOIN
  • 抛弃局部变量 - 您可以直接返回结果
  • 因为函数返回标量BIGINT,所以您需要确保查询永远不会返回多个值,例如:通过使用聚合。
  • 您在RETURN
  • 之前也缺少分号

CREATE FUNCTION `new_function`()
RETURNS BIGINT
BEGIN
  RETURN
    (SELECT SUM(Ingredient_cost_ingredientID)  
      FROM menu_has_ingredient_cost 
        INNER JOIN bill_details_has_menu
        ON bill_details_has_menu.Menu_ItemID
          =menu_has_ingredient_cost.Menu_ItemID);
END;

Fiddle here