在我们的mysql设置中,我们有一个运行时间很长的SP(存储过程),运行大约4个小时(进行大量的数据按摩)。该SP逐个调用不同的SP,然后调用其他一些SP。
SP1 ( main SP)
-> some long running queries..
-> calls SP2
-> SP2 calls SP3
SP3有此代码。
exitblock: begin
... some code...
if .. then
leave exitblock;
end if
END;
当我直接调用SP2
时,会打开一个游标并为每条记录调用SP3。 SP3具有提前退出逻辑(带有标签exitblock
),并且它可以正常工作。
当我致电SP3
时,由于它是长时间运行的调用,它会执行所有操作,直到它遇到第一个LEAVE
语句并退出SP1
,即使它应该退出SP3
并将控制权交还给SP2
。
有什么想法吗?