在我们的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
.
你知道吗?
暂无答案!
目前还没有任何答案,快来回答吧!