DeepEdit!

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

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

Обработка неявных курсоров

Как говорилось в предыдущем разделе, явные курсоры используются для обработки тех операторов SELECT, которые возвращают более одной строки. Однако каждый оператор SQL выполняется в пределах контекст­ной области и поэтому имеет курсор, указывающий на конкретную кон­текстную область. Такой курсор называется SQL- курсором. В отличие от явных курсоров, SQL-курсор не открывается и не закрывается програм­мой. PL/SQL неявно открывает SQL-курсор, обрабатывает SQL-оператор и затем закрывает этот курсор.
Неявные курсоры используются для обработки операторов INSERT, UPDATE, DELETE, а также однострочных операторов SELECT...INTO. SQL-курсор открывается и закрывается PL/SQL, поэтому команды OPEN, FETCH и CLOSE не нужны. Однако для SQL-курсоров можно при­менять курсорные атрибуты. Например, ниже приводится блок, в кото­ром оператор INSERT выполняется в том случае, если оператору UPDATE не соответствует ни одной строки.
Атрибут        можно использовать в операторах
SELECT...INTO, но он мало подходит для этого. Дело в том, что если опе­ратор SELECT...INTO не выбирает ни одной строки, Oracle выдает сооб­щение об ошибке/
В результате управление блоком сразу же передается разделу обработки исключительных ситуаций, и атрибут SQL%NOTFOUND не проверяется. Проиллюстрируем вышесказанное на примере сеанса SQL*Plus:
Обработка исключительных ситуаций детально обсуждается в главе 7. Заметим, что SQL%NOTFOUND можно проверить внутри обработчика исключительной ситуации NO_DATA_FOUND, но здесь это условие все­гда будет истинным.
Можно воспользоваться также атрибутом SQL%ISOPEN, однако он всегда будет возвращать FALSE, поскольку неявный курсор автоматиче­ски закрывается после обработки его оператора.
 









jAntivirus