我一直试图在存储过程中调用另一个存储过程并对其结果执行操作。我已经阅读use result set of mysql stored procedure in another stored procedure并注意到我需要在内部调用中创建一个临时表来存储结果并在外部调用中查询该临时表。
但是,每当我调用外部存储过程时,它总是返回内部存储过程调用的结果。
为了简化这一点,我制作了两个存储过程:
CREATE PROCEDURE `classmates`.`three` ()
NOT DETERMINISTIC
begin
SELECT 3;
end;
和
CREATE PROCEDURE `classmates`.`four` ()
NOT DETERMINISTIC
begin
call three();
SELECT 4;
end;
然后我打电话给:
call four();
它返回:
+-------------+
| 3 |
+-------------+
| 3 |
+-------------+
为什么不返回4? 提前谢谢!
编辑:将程序更改为DETERMINISTIC并没有帮助。我的真实'三()'过程是一个非常长的过程而不是确定性的,结果包含> 10列。复制来自'三()'的代码到那个()' ......那肯定有效,但会减少代码重用。
PS这是我第一次提出问题,很抱歉,如果我不清楚,请告诉我!
编辑:已解决,感谢Barmar!
我创建了一个帮助器存储过程,它只创建临时表,并且不单独执行任何SELECT语句。然后在两个过程调用中我调用这个帮助器。问题解决了!