mysql存储功能:如何选择多个结果并处理它们。例如,
create function hello() return decimal(10,2) determistic begin
select value1, value2 from Foo;
// process multiple rows in result set here
for (....) {
}
end
https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html说:
返回结果集的语句可以在存储过程中使用,但不能在存储的函数中使用。
您不能像在存储过程中那样在存储函数中运行select ... from Foo
,因为select
将生成具有多个列和多个值的结果集。
存储的函数只能返回单个标量值。在您的示例中,您将返回decimal(10,2)
。因此,无论您对查询执行什么操作,结果都必须以RETURN statement中的表达式结束。
如果需要运行select
查询,可以将结果存储到变量中,然后返回该变量。
...
begin
declare d decimal(10,2);
select <expr> into d from Foo limit 1;
return d;
end
或者您可以运行游标(由评论中上面的@stickybit发布的链接建议),并逐行处理查询的结果。请参阅该文档页面中的示例:https://dev.mysql.com/doc/refman/8.0/en/cursors.html
我不能详细介绍,因为你没有描述你要对你的功能做什么,而你展示的例子并没有说清楚。