所以我正在尝试为学校项目创建一个函数,该函数背后的想法是从食谱数据库中提取所有成分。当我使用该函数时,我创建了 MySQL 错误状态 1415 not allowed to return a result set from a function。这是我的代码。
DELIMITER ??
DROP FUNCTION IF EXISTS fxn_get_ingredients??
CREATE FUNCTION fxn_get_ingredients (ingredientList VARCHAR (100))
RETURNS VARCHAR (100) DETERMINISTIC
BEGIN
SELECT
i.ingredientName AS 'Ingredient Name'
FROM ingredients i
INNER JOIN recipe_ingredients ri ON i.ingredientID=ri.ingredientID
INNER JOIN recipes r ON ri.recipeID=r.recipeID
WHERE r.recipeTitle = ingredientlist;
END ??
DELIMITER ;
我不确定此错误意味着什么或如何解决该问题。任何帮助将不胜感激。
最佳答案
表值函数
在MySQL
中不存在;因此您不能从函数返回表,而是选择使用过程。另一种选择如下所示
DELIMITER ??
DROP FUNCTION IF EXISTS fxn_get_ingredients??
CREATE FUNCTION fxn_get_ingredients (ingredientList VARCHAR (100))
RETURNS tinyint(1)
BEGIN
DECLARE result INT DEFAULT 0;
CREATE TABLE temp_table(ingredientName varchar(100));
INSERT INTO temp_table
SELECT
i.ingredientName AS 'Ingredient Name'
FROM ingredients i
INNER JOIN recipe_ingredients ri ON i.ingredientID=ri.ingredientID
INNER JOIN recipes r ON ri.recipeID=r.recipeID
WHERE r.recipeTitle = ingredientlist;
SET result = 1;
RETURN result ;
END ??
DELIMITER ;
然后调用该函数,然后可以执行 select * from temp_table;
关于mysql - 函数有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31224736/