понеділок, 16 листопада 2015 р.

Перекомпил подчиненного типа



У нас есть два типа, один объектный, другой - таблица значений первого типа.
Первый тип:
create or replace type t_test1 as object
(
  ROW_ID          NUMBER,
  G_ID            NUMBER,
  QTY             NUMBER,
  PRICE           NUMBER
)

Второй тип:
create or replace type tb_test1 as table of t_test1

Если мы захотим добавить/убрать поле в первом типе, то при компиле мы получим ошибку:
ORA-02303: cannot drop or replace a type with type or table dependents

Что бы не делать подобных манипуляций:
- удалять второй тип, который ссылается на первый;
- редактировать первый;
- повторно создавать второй;

можно добавить в описание первого типа ключевое слово FORCE:
create or replace type t_test1 FORCE as object
(
  ROW_ID          NUMBER,
  G_ID            NUMBER,
  QTY             NUMBER
)

При перекомпиле второй тип станет инвалидным, поэтому его тоже надо перекомпилить.

FORCE действует только для типов данных, если на тип ссылается таблица, то FORCE не поможет.

Немає коментарів:

Дописати коментар