Oracle PL/SQL Tutorial/PL SQL Statements/GOTO — различия между версиями

Материал из SQL эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Текущая версия на 10:05, 26 мая 2010

An Example of the GOTO Statement

SQL> DECLARE
  2       v_Status NUMBER := 1;
  3  BEGIN
  4       IF v_Status = 1 THEN
  5            GOTO mybranch;
  6       ELSE
  7            v_Status := 1;
  8       END IF;
  9  <<mybranch>>
 10        NULL;
 11  END;
 12  /
PL/SQL procedure successfully completed.
SQL>


Demonstrate GOTO

SQL>
SQL>
SQL> SET SERVEROUTPUT ON
SQL> BEGIN
  2     DBMS_OUTPUT.PUT_LINE("BEGINNING OF BLOCK");
  3
  4     GOTO l_Last_Line;
  5
  6     DBMS_OUTPUT.PUT_LINE("GOTO didn""t work!");
  7     RETURN;
  8     <<l_Last_Line>>
  9     DBMS_OUTPUT.PUT_LINE("Last Line");
 10  END;
 11  /
BEGINNING OF BLOCK
Last Line
PL/SQL procedure successfully completed.
SQL>


FOR LOOP with label

SQL>
SQL> set serveroutput on
SQL> set echo on
BEGIN
     FOR v_loopcounter IN 1..5 LOOP
          <<insideloop>>
          DBMS_OUTPUT.PUT_LINE("Loop counter is " || v_loopcounter);
          GOTO insideloop;
     END LOOP;

END;
/


GOTO statement

SQL>
SQL> set serveroutput on
SQL> set echo on
SQL>
DECLARE
     v_Emergency_Warning VARCHAR2(50);
     v_Status NUMBER := 0;
BEGIN
     <<Emergency_Check>>
     BEGIN
          IF v_Status = 1 THEN
              DBMS_OUTPUT.PUT_LINE("call PANIC(); ");
              GOTO Emergency_Check;
 
          END IF;
     END;
END;
/


JUMP out of a IF statement

SQL>
SQL> set serveroutput on
SQL> set echo on
SQL>
SQL>    DECLARE
  2          v_Status NUMBER := 1;
  3     BEGIN
  4          IF v_Status = 1 THEN
  5               GOTO mybranch;
  6          ELSE
  7               v_Status := 1;
  8          END IF;
  9          <<mybranch>>
 10          NULL;
 11    END;
 12  /
PL/SQL procedure successfully completed.
SQL>


Labels and the GOTO Statement

The GOTO statement can unconditionally branches to a statement label.

Statement labels are identifiers of a block of code.

Statement labels can be accessed directly by the GOTO statement.



<<label_name>>