Теория для лабораторной работы №4 - "PL/SQL – процедурное расширение языка SQL", страница 11

Примечание: эта команда не изменяет объявление или определение существующего пакета. Для преобъявления или преопределения пакета, вы должны использовать комманду CREATE PACKAGE или CREATE PACKAGE BODY с опцией OR REPLACE.

 

Перекомпиляция спецификаций пакета.

Вам может понадобиться перекомпилировать спецификацию пакета, чтобы проверить на ошибки компиляции после изменения спецификации. Когда вы выдаёте инструкцию ALTER PACKAGE с опцией COMPILE PACKAGE, Oracle7 перекомпилирует спецификацию и тело пакета в зависимости от их правильности. Когда вы перекомпилируете спецификацию пакета, Oracle7 обновляет любые локальные объекты, которые зависят от спецификации, такие как процедуры, которые вызывают процедуры или функции из пакета. Заметим, что тело пакета также зависит от спецификации. Если вы впоследствии сошлётесь, на один из этих зависимых объектов, без предваритнльной их прекомпиляции, Oracle7 прекомпилирует из неявно во время выполнения.

 

Перекомпиляция тела пакета.

Вам может понадобиться перекомпилировать тело пакета после его модификации. Когда вы выдаёте инструкцию ALTER PACKAGE с опцией COMPILE BODY, Oracle7 перекомпилирует тело пакета в зависимости от его правильности. Когда вы прекомпилируете тело пакета, Oracle7 сначала прекомпилирует объекты, от которых тело зависит, если один из этих объектов неправильный. Если Oracle7 перекомпилирует тело успешно, тело становится доступным. Если перекомпиляция тела приводит к ошибкам компиляции, Oracle7 возвращсет ошибку и тело остаётся неправильным. Затем вы можете отладить тело, используя предопределённый пакет DBMS_OUTPUT. Примечание: прекомпиляция тела пакета не обновляет объекты, которые зависят от спецификации пакета.

 

Пример.

Эта инструкция явно перекомпилирует спецификацию и тело пакета ACCOUNTING в схеме BLAIR:

ALTER PACKAGE blair.accounting

               COMPILE PACKAGE

 

Если Oracle7 не обнаружиавет ошибок компиляции при перекомпиляции спецификации и тела, ACCOUNTING становится доступным. BLAIR может впоследствии вызывать или ссылаться на все объекты пакета , объявленных в спецификации ACCOUNTING без прекомпиляции во время выполнения. Если при перекомпиляции ACCOUNTING возникают ошибки компиляции,  Oracle7 возвращает сообщение об ошибке и ACCOUNTING остаётся неправильным..