DeepEdit!

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

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

Модули и зависимости

Как показано в предыдущем примере, хранимые подпрограммы стано­вятся недостоверными при модификации зависимых объектов. Однако для модулей дело обстоит иначе. Рассмотрим зависимости ClassPackage (см. главу 9), показанные на рис. 10.7. Тело модуля зависит от таблицы registered_students и от заголовка модуля. Заголовок же модуля не зави­сит ни от его тела, ни от registered_students. В этом и заключается преи­мущество модулей. Можно изменить тело модуля, не изменяя его заголовка. При этом другие объекты, зависящие от заголовка, переком­пилировать не нужно, так как они никогда не станут недостоверными. Если изменяется заголовок, то тело модуля автоматически становится недостоверным, поскольку оно зависит от заголовка.
Внимание
В некоторых ситуациях необходимо изменять заголовок модуля при изменении его тела. Например, если аргументы процедуры, описанные и в спецификации, и в теле, меняются в теле модуля, то нужно модифицировать и заголовок, чтобы установить соответствие. Если же реализация процедуры в теле изменяется без влияния на свое объявление, то модифицировать заголовок не требуется. Аналогично, при использовании модели зависимости сигнатуры (см. ниже раздел "Определение недостоверности") тело становится недостоверным только при изменении сигнатур объектов в спецификации модуля, а также при добавлении объекта (например, курсора или переменной) в заголовок модуля.
Проиллюстрируем вышесказанное на примере следующего сеанса ра­боты в SQL*Plus:


Внимание
6 представлениях словаря данных user_dependencies, all_dependencies и dba_dependencies отображаются все взаимосвязи, существующие между объектами схем. Более подробно об этих представлениях рассказывается в приложении С.

 









jAntivirus