在 MariaDB 中,我想从 SELECT 语句中调用存储过程,如下所示:
SELECT
CALL GetInfoForOneRow(hdp.p00)
FROM historydataprofile hdp
WHERE hdp.id IN ( 1, 22, 333)
我想为每个值 1、22 和 333 调用一次存储过程。该过程返回多于一列,但仅返回一行。
这可能吗?可以用函数代替吗?我尝试过使用一个函数,但没有运气,因为函数不能返回多个值。可以用光标吗?
编辑 所以我在更大的背景下的问题是我必须做一个反向透视,即从存储为一行(有很多列)的数据创建一个“键值对”(很多行)格式的结果集,对于每个结果行都需要大量代码的数据。
所以我希望调用代码如下所示:
SELECT GetInfoForOneRow(hdp.p00) FROM scc_historydataprofile hdp WHERE hdp.id = 1
UNION ALL
SELECT GetInfoForOneRow(hdp.p01) FROM scc_historydataprofile hdp WHERE hdp.id = 1
UNION ALL
SELECT GetInfoForOneRow(hdp.p02) FROM scc_historydataprofile hdp WHERE hdp.id = 1
UNION ALL
SELECT GetInfoForOneRow(hdp.p03) FROM scc_historydataprofile hdp WHERE hdp.id =
...
UNION ALL
SELECT GetInfoForOneRow(hdp.p99) FROM scc_historydataprofile hdp WHERE hdp.id = 1
但是我现在意识到,函数和过程都不可能返回多个列,这是使上述代码工作所需的。我将不得不再次查看我的查询结构以找出解决此问题的方法。
如果需要,我将发布一个新问题。
最佳答案
Can you call a stored procedure within a select statement in MariaDB?
不,不是你想要的。
使用存储的函数。
或者编写存储过程,以便它返回您想要的整个结果集(示例中 SELECT 语句的结果)。
关于mysql - 您可以在 MariaDB 中的 select 语句中调用存储过程吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57924592/