Mysql 能否在MariaDB中的select语句中调用存储过程
在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中的每一个调用存储过程一次。该过程返回多个列,但仅返回一行 这可能吗?是否可以用函数代替?我尝试过一个函数,但运气不佳,因为函数无法返回多个值。用光标可以吗 编辑 因此,
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?因此,简短的回答是“否”。这将阻止我搜索不存在的文章来展示它是如何完成的。非常感谢。