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 ;
答案 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;