如何将 VARRAY 添加到 Oracle 对象

How to add a VARRAY to an Oracle object

我需要向对象类型 SpecialEvent_t 添加一个名为 menuNumbers 的 VARRAY,该类型继承自 Event_t

我对这部分有点困惑。我参考了 Stack Overflow、GitHub 等中大多数当前可用的解决方案。但是,这些解决方案中 none 已成功解决。

Event_t(
  EventID:char(5),
  EventType:varchar(20),
  VenueName:varchar(50),
  NoOfGuest:number(10)
) NOT FINAL

HotelEvent_t(
  Date:date,
  Price:numbr(8,2)
) UNDER Event_t

SpecialEvent_t(
  BookingDate:date,
  EndDate:date,
  MenuNumber:number(2),
  Reservation ref Reservation_t
) UNDER event_t

任何建议将不胜感激。

创建一个 VARRAY 类型:

CREATE TYPE numbers_varray AS VARRAY(10) OF NUMBER(10,0);

然后您可以像使用任何其他数据类型一样在您的类型中使用它:

CREATE TYPE Event_t AS OBJECT(
  EventID   char(5),
  EventType varchar(20),
  VenueName varchar(50),
  NoOfGuest number(10)
) NOT FINAL;

CREATE TYPE HotelEvent_t UNDER Event_t (
  datetime date,                -- Date is a keyword, try to use a different name.
  Price  number(8,2)
);

CREATE TYPE SpecialEvent_t UNDER event_t (
  BookingDate date,
  EndDate     date,
  MenuNumbers  NUMBERS_VARRAY,
  Reservation ref Reservation_t
);

db<>fiddle