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

时间:2019-09-13 13:31:24

标签: mysql mariadb

在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 

但是,我现在意识到,没有一个函数或一个过程都不​​能返回多个 columns ,而使上述代码正常工作是必需的。我将不得不再次查看我的查询结构,以了解如何解决此问题。

我将在需要时发布新问题

1 个答案:

答案 0 :(得分:0)

  

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

不,不是您想要的。

使用存储的功能。

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