首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与某项功能有问题

问与某项功能有问题
EN

Stack Overflow用户
提问于 2015-07-04 20:09:48
回答 2查看 41关注 0票数 0

因此,我试图为一个学校项目创建一个函数,其背后的想法是从一个食谱数据库中提取所有成分。使用该函数时,我创建了MySQL错误状态1415,不允许从函数返回结果集。这是我的密码。

代码语言:javascript
复制
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 ;

我不知道这个错误意味着什么,也不知道如何解决这个问题。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-04 20:36:30

Table valued function不存在于MySQL中;因此不能从函数返回表,而只能选择使用perocedure。另一种选择如下

代码语言:javascript
复制
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;。

票数 0
EN

Stack Overflow用户

发布于 2015-07-04 20:22:24

您将需要function。函数不能返回多行。

如果需要使用函数,可以查看mysql特定的SQL扩展塞纳特。如果您将SQL查询设计成一个组,则可以使用此函数将每个结果行的字符串添加到一起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31224736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档