mysql - 函数有问题

标签 mysql sql function

所以我正在尝试为学校项目创建一个函数,该函数背后的想法是从食谱数据库中提取所有成分。当我使用该函数时,我创建了 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/

相关文章:

c++ - 使用指向成员函数的指针的问题

javascript - JavaScript 中的内部函数会被提升吗?范围规则如何适用于它们?

mysql - 计算数据集之间相似度百分比的有效方法

mysql - 如何从MySQL中获取最新的记录?

php - 如何在搜索之前隐藏PHP中SQL表的显示?

sql - 计算共享同一父代的不同 ID 的数量

php - MysqL:对多列执行全文搜索并100%匹配

java - 如何在远程服务器上添加 jar 文件?

sql - 如何从 IBM DB2 中的存储过程返回临时表

javascript - Javascript 中的作用域链以及在全局作用域内调用嵌套函数