1) Помимо набора всего, служит ли пакет какой-либо другой цели?
Кроме этого, уменьшается необходимость перекомпиляции других процедур, которые зависят от конкретной процедуры, когда конкретная процедура изменяется.
Рассмотрим (обычный, не пакетный) procedure XYZ(a in number)
, который вызывается многими другими процедурами. Если эту процедуру изменить, все остальные процедуры необходимо перекомпилировать, что может снизить доступность системы.
С другой стороны, если процедура объявлена в package
и определена в package body
, а процедура изменяется только в теле, (почти) перекомпиляция не происходит.
2) Для развертывания этого пакета необходимо настроить пространство развертывания, чтобы уже были все представления / материализованные представления / и таблицы, которые вызывал пакет? Если нет, я предполагаю, что пакет не будет выполнен.
Нет, вы можете установить package body
без зависимых представлений или таблиц. Состояние тела пакета будет тогда INVALID
, и никакие функциональные возможности тела пакета не будут использоваться.
3) Можете ли вы закодировать пакет, чтобы пропустить функции и процедуры, которые он не может выполнить без бомбардировки?
Не уверен, что именно вопрос. Если состояние тела пакета НЕДОПУСТИМО, код не может быть выполнен, следовательно, «бомбардировка» не может произойти.
Однако, если бомбардировка происходит по логической причине (например, деление на ноль), вы всегда можете прибегнуть к конструкции exception when others then
.
4) Что еще нужно знать при доставке пакета, который успешно скомпилирован из одного места в другое?
Опять же, не уверен, что вы имеете в виду здесь. Не могли бы вы уточнить, что такое одно место ? Схема? Экземпляр? Инсталляция, компания ....?