以下场景中的ContinueHandler范围是什么? stmt2是否通过continue handler处理异常处理?
BEGIN
DECLARE CONTINUE HANDLER FOR ...; -- handler H1
stmt1;
stmt2;
END;
答案 0 :(得分:2)
在
BEGIN ... END
块中声明的处理程序仅在块中处理程序声明之后的SQL语句的范围内。如果处理程序本身引发了一个条件,它就无法处理该条件,也无法在块中声明任何其他处理程序。在以下示例中,处理程序H1
和H2
适用于语句stmt1
和stmt2
即可。但H1
或H2
的正文范围内H1
或H2
的{{1}}或BEGIN -- outer block DECLARE EXIT HANDLER FOR ...; -- handler H1 DECLARE EXIT HANDLER FOR ...; -- handler H2 stmt1; stmt2; END;
都不在其中。{{1}}