Насколько я знаю, тело пакета можно заменить и перекомпилировать, не затрагивая спецификацию. Спецификация пакета объявляет процедуры и функции, а не определяет их, поэтому они не могут ссылаться на объекты, которые могут сделать спецификацию пакета INVALID.Когда спецификация пакета Oracle становится INVALID
Я знаю, что спецификация пакета может ссылаться на объекты, когда она использует автономные подпрограммы и другие пакеты для определения ее переменных. В этом случае изменение ссылочных объектов может привести к недействительности спецификации.
Есть ли другой способ, каким образом спецификация пакета Oracle может зависеть от объектов (ссылок) и становиться INVALID независимо от того, происходит ли изменение объектов или объектов по ссылке?
Благодарим вас за ответ. Когда тип table.column% используется как тип аргумента подпрограммы, объявленной в спецификации, будет ли DDL-операция в таблице влиять на спецификацию. Если да, укажите это в своем ответе, пожалуйста. – chumakoff
@chumakoff Я не уверен, что вы подразумеваете под подпрограммой в спецификации пакета. Но, как правило, если у вас есть такая ссылка, тип% (или rowtype) в объявлениях пакетов отвечает да, это будет затронуто. – Kacper
Подпрограмма - это процедура или функция. Когда вы объявляете его в спецификации пакета, вы должны описать его подпись, то есть типы аргументов и тип возвращаемого значения. Для примера: ПРОЦЕДУРА my_proc (id employees.employee_id% TYPE) – chumakoff