Mysql 能否在MariaDB中的select语句中调用存储过程

Mysql 能否在MariaDB中的select语句中调用存储过程,mysql,mariadb,Mysql,Mariadb,在MariaDB中,我想从SELECT语句中调用存储过程,如下所示: SELECT CALL GetInfoForOneRow(hdp.p00) FROM historydataprofile hdp WHERE hdp.id IN ( 1, 22, 333) 我想为值1、22和333中的每一个调用存储过程一次。该过程返回多个列,但仅返回一行 这可能吗?是否可以用函数代替?我尝试过一个函数,但运气不佳,因为函数无法返回多个值。用光标可以吗 编辑 因此,

在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 
然而,我现在意识到,既不能让函数也不能让过程返回使上述代码工作所需的多列。我将不得不再次查看我的查询结构,以找出如何解决这个问题

如果需要,我将发布一个新问题

您可以在MariaDB中的select语句中调用存储过程吗

不,不是你想的那样

使用存储的函数


或者编写存储过程,使其返回所需的整个结果集(示例中SELECT语句的结果)。

该过程
GetInfoForOneRow
看起来如何?编辑问题以添加其代码。也许您可以通过一个简单的查询来实现这一点,而不是在
select
中使用一个过程。为什么不在存储过程中创建一个游标,在该游标中循环选择的结果io?因此,简短的回答是“否”。这将阻止我搜索不存在的文章来展示它是如何完成的。非常感谢。