gpt4 book ai didi

MySQL在另一个过程中调用一个过程并将值插入临时表

转载 作者:可可西里 更新时间:2023-11-01 06:37:52 25 4
gpt4 key购买 nike

我有两个过程 proc1 和 proc2。我在另一个 mysql 过程中调用一个 mysql 过程。

在 proc1 中,我想将 proc2 中的值插入到 proc1 临时表中。proc2 返回两列,但我只想将一列插入到 proc1 临时表中。

Proc2 的输出如下

Hrs(Timestamp)    Status
09:30 IN,OUT,IN,OUT
04:30 IN,OUT
07:30 IN,OUT,IN,OUT
04:25 IN,OUT

Proc1代码

CREATE PROCEDURE Proc1()
BEGIN
DROP TABLE IF EXISTS TempWorkedHrs ;
CREATE TEMPORARY TABLE TempWorkedHrs(WorkedHrs TIMESTAMP);

INSERT INTO TempWorkedHrs(WorkedHrs)
CALL Proc2();

SELECT SUM(WorkedHrs) INTO @TotalHrs
FROM TempWorkedHrs;
END //

当我将值插入 proc1 中的临时表时,proc2 中的第二列对我来说并不重要。

Q1。如何将从过程返回的特定列插入到临时表中?在我的例子中,来自 proc2 的第一列。

最佳答案

简短回答:这是不可能的。

长答案:这是不可能的,但有一些变通方法可以达到同样的效果。

选项 1:向您的临时表添加一个虚拟列。将 Proc2 中的所有列插入临时表。然后删除虚拟列。脏。

选项 2:向 Proc2 添加一个参数,BOOLEAN 可能是一个不错的选择。根据参数值插入更多或更少的列。少脏。

选项 3:您真的需要 Proc2 是一个过程吗?换句话说,它是否真的在选择数据之前修改数据(或者更一般地说,修改环境)?换句话说, View 不是更适合这种情况吗?

[编辑]

感谢 James Holderness 的指点,我意识到您可能不知道存储过程没有返回值(没有办法绕过它)。我理所当然地认为“Proc2 返回数据”,您实际上是指“Proc2 将一些数据写入 TempWorkedHrs Proc1 将读回”。如果可以,请避免这种方法(选项 1. 或 2. 无论如何都是脏的)。您很可能需要此处的 View 。

关于MySQL在另一个过程中调用一个过程并将值插入临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17289655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com