Как правило, когда вы публикуете свой API (например, спецификацию пакета с несколькими процедурами и функциями) и он вводится в действие, вы подписываете своего рода договор с другими разработчиками.
Вы не должны изменять подпись этих подпрограмм (изменять условия контракта), если это не является абсолютно необходимым.
Альтернативы включают в себя:
- При добавлении нового параметра IN всегда помещайте его в конец существующего списка параметров и предоставьте значение по умолчанию, которое отражает текущее поведение (до изменения). Все существующие вызовы подпрограммы остаются действительными.
- Если вы добавляете параметры OUT или IN OUT, рассмотрите возможность оставить текущую подпрограмму как есть и вместо этого добавить перегрузку - то же имя, но с новым расширенным списком параметров.
Таким образом, существующий код не становится недействительным. Затем вы можете уведомить разработчиков о новых подпрограммах (изменить контракт), и они могут выбрать, использовать их или нет.
Кстати, вы можете использовать PL / Scope, чтобы найти все варианты использования определенной подпрограммы. LiveSQL.oracle.com предлагает несколько сценариев PL / Scope. Просто найдите «область». Кроме того, Филипп Салвисберг предлагает отличную утилиту PL / Scope на Github: https://www.salvis.com/blog/2017/03/17/plscope-utils-utilities-for-plscope-in-oracle-database-12-2/