DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Операторы GOTO и метки

В языке программирования 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, например циклов или условных выражений. Для выхода из вложенного цикла можно вместо .оператора перехода к концу блока воспользоваться исключительной ситуацией.
 









jAntivirus