Поскольку чьи-то старые ошибки всегда являются новостью для меня, я добавлю свои 3 цента:
Кто-то удалил свою спецификацию, но все еще имел тело (Нет, я не знаю как), и они "не хотели вводить все это обратно".
Итак, я показал им, как генерировать спецификацию из тела:
- Скопируйте тело в рабочий лист.
- Вставьте пустой заголовок над телом с названием пакета.
- Compile.
- [Если вы получили ошибку или нет,] Щелкните правой кнопкой мыши тело пакета в дереве пакетов и выберите «Синхронизировать спецификацию и тело».
- Выберите объекты для отображения в спецификации и нажмите ОК.
- "волшебство происходит"
Только магии не произошло - и все стало красным ... с ошибками PLS-00323.
Разработчик SQL заполняет спецификацию пакета, извлекая заголовки процедур и функций из самого кода, поэтому вам не нужно беспокоиться о таких вещах. Он представляет список объектов, которые нужно добавить в пакет / спецификацию, и вы выбираете, какие из них добавить.
Мы выбрали правильные процедуры и функции, но они скомпилированы с ошибками. Снова. И снова.
Оказывается, что функции, которые генерировали ошибки, были определены в теле пакета с помощью DETERMINISTIC - когда редактор SQL Dev выполнил синхронизацию, он пропустил слово. Это довольно существенно.
Во всяком случае, пересмотрел, вставил DETERMINISTIC в определенные функции перед точкой с запятой, сохранил (перекомпилировал), и затем это снова стало волшебством.
Вы ожидаете, что SQL Developer выполнит всю работу вместо половины ... ... 1031 *