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

标签 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 

但是我现在意识到,函数和过程都不可能返回多个,这是使上述代码工作所需的。我将不得不再次查看我的查询结构以找出解决此问题的方法。

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

最佳答案

Can you call a stored procedure within a select statement in MariaDB?

不,不是你想要的。

使用存储的函数。

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

关于mysql - 您可以在 MariaDB 中的 select 语句中调用存储过程吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57924592/

相关文章:

Mysql转换表,排序规则不变

mysql - 提高性能 mySQL 查询

mysql - 未创建 Sequelize 关联

mysql - 无法让 Python3 - MySQLdb 连接器在 16.04 中工作

php - group_concat MYSQL换行

mysql - Wordpress 负载过重时 MySQL 周期性锁定

MySQL/MariaDB 事件优化数据库表

mysql - 您的 SQL 语法有错误(但没有错误)

docker - chown : changing ownership of '/var/lib/mysql/' : Operation not permitted

mysql - 将 sql master 链接到属性表,然后将 prop 值表示为列