第三方存储过程在select上返回值,它会停止我自己的存储过程

时间:2016-04-22 15:17:25

标签: mysql stored-procedures

我正在设计一个存储过程,它执行很多操作,其中一些涉及我无法编辑的第三方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_pa​​ram和logger =“这就是结束......”的值,我收到了third_party_SP的选择(我甚至没有收到logger =“中途!”在我看来,一旦收到返回值,my_own_sp的执行就会停止,但是这个值是third_party_SP的最后一个选择。

所以问题是:我可以处理返回的third_party_SP选择,这样我可以继续工作吗?或者可能有另一种方法来调用third_party_SP以避免返回的选择?

非常感谢

0 个答案:

没有答案