В языке программирования PL/SQL имеется оператор GOTO (перейти к). Его синтаксис:
GOTO метка где метка — это метка, определяемая в блоке PL/SQL. Метки заключаются в двойные угловые скобки. При выполнении оператора GOTO управление программой сразу же передастся оператору, на который указывает метка. Представим рассматриваемый пример цикла следующим образом:
Ограничения при использовании GOTO
В PL/SQL на использование операторов GOTO налагаются определенные ограничения. Нельзя передавать управление программой во внутренний блок, цикл или оператор IF. Приведем пример:
Если бы это допускалось, то операторы внутри оператора IF могли бы быть выполнены, даже если бы условие IF не было истинным. В примере, приведенном выше, оператор INSERT выполнился бы даже тогда, когдах = 2.
Кроме того, запрещается передавать управление из одной последовательности операторов условного оператора IF в другую:
Наконец, нельзя передавать управление из обработчика исключительных ситуаций обратно в текущий блок. Исключительные ситуации рассматриваются в главе 7.
Помеченные циклы
Циклы могут быть помечены. При этом метка может быть указана в операторе EXIT для определения цикла, который нужно прервать. Например:
Если цикл помечен, имя метки можно указывать после оператора END LOOP, как показано в этом примере.
Рекомендации по применению GOTO
При использовании операторов GOTO следует соблюдать осторожность. Лишние операторы GOTO могут привести к нарушению структуры программы: управление программой может перемещаться с места на место без видимой причины, что затруднит ее понимание и сопровождение.
Все случаи применения операторов GOTO могут быть представлены с помощью других управляющих структур PL/SQL, например циклов или условных выражений. Для выхода из вложенного цикла можно вместо .оператора перехода к концу блока воспользоваться исключительной ситуацией.
< Предыдущая | Следующая > |
---|