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