1

DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK“应该”在事务之前使用,以明确设置失败时的值。

但是,文档指出这或多或少是默认行为?

如果发生了没有声明处理程序的条件,则采取的操作取决于条件类:

对于 SQLEXCEPTION 条件,存储程序在引发条件的语句处终止,就好像有一个 EXIT 处理程序一样。如果该程序被另一个存储的程序调用,则调用程序使用应用于其自己的处理程序的处理程序选择规则来处理该条件。

但这意味着COMMIT永远不会被调用,因此与没有处理程序的效果相同。

我不确定如何解释。听起来“显而易见”的事情是退出存储的程序,但是如果调用程序有处理程序告诉要否则 - 也许是DECLARE EXIT HANDLER FOR SQLEXCEPTION CONTINUE- 我不清楚内部存储的程序是否继续,或者“处理程序”是什么选择规则”是一般性的。

如果这种(对我来说很奇怪)解释是这种情况,那么这意味着如果假设一个存储程序可以假设它从未被另一个存储程序调用,则处理程序是无关的,但它确保了一致的行为

4

0 回答 0