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

Arr*_*und 7 mysql mysqli stored-procedures

我有两个程序说proc1和proc2.我在另一个内部调用一个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
Run Code Online (Sandbox Code Playgroud)

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 //
Run Code Online (Sandbox Code Playgroud)

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

Q1.如何将从过程返回的特定列插入临时表?在我的情况下proc2的第一列.

Ran*_*eed 4

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

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

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

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

选项 3:您真的需要Proc2接受手术吗?换句话说,它在选择数据之前是否真的修改了数据(或者更一般地说,环境)?换句话说,在这种情况下视图不是更合适吗?

[编辑]

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