MySQL中继续处理程序的范围

时间:2014-04-20 10:42:16

标签: mysql

以下场景中的ContinueHandler范围是什么? stmt2是否通过continue handler处理异常处理?

BEGIN 
    DECLARE CONTINUE HANDLER FOR ...;  -- handler H1
    stmt1;
    stmt2;  
  END;

1 个答案:

答案 0 :(得分:2)

正如Scope Rules for Handlers所述:

  

BEGIN ... END块中声明的处理程序仅在块中处理程序声明之后的SQL语句的范围内。如果处理程序本身引发了一个条件,它就无法处理该条件,也无法在块中声明任何其他处理程序。在以下示例中,处理程序H1H2适用于语句 stmt1 stmt2 即可。但H1H2的正文范围内H1H2的{​​{1}}或BEGIN -- outer block DECLARE EXIT HANDLER FOR ...; -- handler H1 DECLARE EXIT HANDLER FOR ...; -- handler H2 stmt1; stmt2; END;都不在其中。

{{1}}