我正在设计一个存储过程,它执行很多操作,其中一些涉及我无法编辑的第三方SP,因为它们被大量用于我正在开发的应用程序的其他位置。我会简化我的代码,以便更轻松地解释我的问题:
我的代码如下:
DELIMITER ;;
CREATE PROCEDURE `my_own_sp`(
IN my_param INT(11),
OUT my_returned_value INT(11),
OUT logger TEXT
)
BEGIN
SET logger = "echo off";
CALL third_party_SP(my_param);
SET logger = "half way!";
CALL another_third_party_SP(my_param);
SELECT id_user INTO my_returned_value FROM main_Table WHERE id_param = my_param;
SET logger = "This is the end...";
END;;
DELIMITER ;
两个第三方SP都如下所示,它们不会返回任何值,但是它们会修改一些表和记录,然后它们会生成一个SELECT以便在PHP中接收结果:
DELIMITER ;;
CREATE PROCEDURE `third_party_SP`(
IN my_param INT(11)
)
BEGIN
-- Do a lot of magic between tables
SELECT * FROM secondary_table WHERE id_param = my_param;
END;;
DELIMITER ;
但是当我执行我的SP时,而不是接收my_returned_param和logger =“这就是结束......”的值,我收到了third_party_SP的选择(我甚至没有收到logger =“中途!”在我看来,一旦收到返回值,my_own_sp的执行就会停止,但是这个值是third_party_SP的最后一个选择。
所以问题是:我可以处理返回的third_party_SP选择,这样我可以继续工作吗?或者可能有另一种方法来调用third_party_SP以避免返回的选择?
非常感谢