因此,我试图为一个学校项目创建一个函数,其背后的想法是从一个食谱数据库中提取所有成分。使用该函数时,我创建了MySQL错误状态1415,不允许从函数返回结果集。这是我的密码。
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 ;我不知道这个错误意味着什么,也不知道如何解决这个问题。任何帮助都将不胜感激。
发布于 2015-07-04 20:36:30
Table valued function不存在于MySQL中;因此不能从函数返回表,而只能选择使用perocedure。另一种选择如下
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;。
https://stackoverflow.com/questions/31224736
复制相似问题