【发布时间】:2021-02-15 00:35:33
【问题描述】:
考虑以下过程:
CREATE PROCEDURE `getFoo`()
BEGIN
select 'bar' as foo;
END;
一旦call-ed,它就会输出:
{"foo":"bar"}
但是如果getFoo 在一个不同的 存储过程中被调用,我该如何将它的结果内容捕获到一个变量中,像这样?
CREATE PROCEDURE `masterProc`()
BEGIN
call `getFoo`() into @foo;
select @foo as foo;
END;
调用时会输出以下错误:sqlMessage: "FUNCTION db.getFoo does not exist"
我知道涉及out 参数的可用选项,但对于我的问题,这些不是可行的解决方案。
义务
getFoo 无法更改。它将输出SELECT 语句的结果,而不涉及任何variables 或parameters。
我的尝试
不幸的是,都会输出错误。
set @foo = exec getFoo();
set @foo = call getFoo();
select getFoo() into @foo;
call getFoo() into @foo;
【问题讨论】:
-
我之前在mysql中没有遇到过currentFunction: - 你有它的参考吗?
-
@P.Salmon Snap 我忘了删除它。它用于
GOTO和leave目的。编辑了问题并删除了语句标签。 -
mysql中也没有goto..
-
是的,
GOTO本身并没有声明,但有一些变通方法可以实现类似于 goto 的工作流程。
标签: mysql stored-procedures mysql-variables