Команда GOTO в PL/SQL Oracle
Команда GOTO выполняет безусловный переход к другой исполняемой команде в том же исполняемом разделе блока PL/SQL. Как и в случае с другими конструкциями языка, уместное и осторожное применение GOTO способно расширить возможности ваших программ.
Синтаксис команды GOTO
GOTO имя_метки;
Здесь имя_метки — имя метки, идентифицирующей целевую точку перехода.
В коде метка выглядит так:
<<имя_метки>>
Имя метки заключается в двойные угловые скобки. Когда компилятор PL/SQL встречает команду GOTO, он немедленно передает управление первой исполняемой команде, следующей за меткой. Блок кода в следующем примере содержит и метку, и команду GOTO:
BEGIN GOTO second_output; DBMS_OUTPUT.PUT_LINE('Эта строка никогда не выполняется.'); <<second_output>> DBMS_OUTPUT.PUT_LINE('Мы здесь!'); END;
На использование команды GOTO налагаются некоторые ограничения:
- За меткой должна следовать хотя бы одна исполняемая команда.
- Целевая метка должна находиться в пределах области действия оператора GOTO.
- Целевая метка должна находиться в той же части блока PL/SQL, что и оператор GOTO.
Несмотря на стойкое предубеждение против команды GOTO, иногда она бывает очень полезна. Например, в некоторых случаях она способна упростить логику программы. С другой стороны, поскольку PL/SQL включает так много разнообразных управляющих конструкций и средств модульного разбиения программного кода, практически для любой задачи можно найти более удобное решение, не связанное с использованием GOTO.