mysql存储功能:如何选择多个结果并处理它们

问题描述 投票:0回答:1

mysql存储功能:如何选择多个结果并处理它们。例如,

create function hello() return decimal(10,2) determistic begin

   select value1, value2 from Foo;
   // process multiple rows in result set here
   for (....) {

   }

 end
mysql stored-functions
1个回答
0
投票

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

我不能详细介绍,因为你没有描述你要对你的功能做什么,而你展示的例子并没有说清楚。

© www.soinside.com 2019 - 2024. All rights reserved.