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