DeepEdit!

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

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

Зависимости состояния модуля на этапе выполнения

Помимо зависимостей между хранимыми объектами, существуют зависи­мости между состоянием модуля и анонимными блоками. Для примера рассмотрим следующий модуль:
В SimplePkg содержится глобальная переменная модуля — v_GlobalVar. Предположим, что SimplePkg была создана в некотором сеансе базы дан­ных. Вызовем SimplePkg. UpdateVaг во втором сеансе из следующего блока:
Теперь вернемся к первому сеансу и создадим SimplePkg еще раз, снова выполнив сценарий создания. Наконец выполним тот же самый аноним­ный блок во втором сеансе. В результате получим:
Что же произошло? Картина зависимостей для этой ситуации пред­ставлена на рис. 10.13. Анонимный блок зависит от SimplePkg так же, как и ранее. Это зависимость этапа компиляции, поскольку определяется при первой компиляции анонимного блока. Однако здесь присутствует и за­висимость этапа выполнения от модульной переменной, так как у каждо­го сеанса есть своя собственная копия модульных переменных. Таким образом, при перекомпиляции SimplePkg зависимость этапа выполнения сохраняется, что делает блок недостоверным и устанавливает ошибку ORA-4068.
Зависимости этапа выполнения определяются только состоянием мо­дуля: объявленными в нем переменными и курсорами. Если бы в модуле не было глобальных переменных, то второе исполнение анонимного бло­ка прошло бы успешно.
 









jAntivirus