基于表

时间:2015-09-18 18:51:37

标签: sql oracle object plsql

我有一个数据库,其中包含国家税率和县税率的单独表格,我想创建一些对象来代表这些看起来像... ...

create type county as object
(
  my_nation nation,
  local_taxRate number
);

create type counties as table of county;

create type nation as object
(
  national_taxRate number
  my_counties counties
);

这是不可能的,因为它创建了一个循环定义。有没有办法处理这个问题?

1 个答案:

答案 0 :(得分:1)

根据文件:
http://docs.oracle.com/cd/E11882_01/appdev.112/e11822/adobjmng.htm#ADOBJ7651

  

直接依赖于彼此定义的类型   或通过中间类型,称为相互依赖。对于   例如,您可能希望定义对象类型employee和department   以这种方式,员工的一个属性是部门   员工属于,部门的一个属性是员工   谁管理部门。

     

如果您使用箭头显示图表,可以显示其中的关系   一组相互依赖的类型,连接形成一个循环。 要   定义这样一个循环依赖,你必须使用REF至少一个   圈子的一部分。

您需要在定义中的某处使用REF,例如:

create type nation /* empty type placeholder */
/

create type county as object
(
  my_nation REF nation,
  local_taxRate number
);
/

create type counties as table of county
/

/* redefinition of "empty" nation */
create type nation as object
(
  national_taxRate number,
  my_counties counties
)
/
相关问题