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