GOTO语句

    label declaration ::=

    goto statement ::=

    GOTO使用有以下限制场景

    • 不支持有多个相同的GOTO labels目标场景,无论是否在同一个block中。

      1. GOTO pos1;
      2. <<pos1>>
      3. SELECT * FROM ...
      4. <<pos1>>
      5. UPDATE t1 SET ...
    • 不支持GOTO跳转到IF语句,CASE语句,LOOP语句中。

      1. IF valid THEN
      2. GOTO pos1;
      3. SELECT * FROM ...
      4. ELSE
      5. <<pos1>>
      6. UPDATE t1 SET ...
    • 不支持从外部块跳转到内部的BEGIN-END块。

    • 不支持从异常处理部分跳转到当前的BEGIN-END块。但可以跳转到上层BEGIN-END块。

      1. BEGIN
      2. <<pos1>>
      3. UPDATE t1 SET ...
      4. EXCEPTION
      5. WHEN condition THEN
      6. END;
    • 如果从GOTO到一个不包含执行语句的位置,需要添加NULL语句。