我有一个数据库,其中包含国家税率和县税率的单独表格,我想创建一些对象来代表这些看起来像... ...
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
);
这是不可能的,因为它创建了一个循环定义。有没有办法处理这个问题?
答案 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
)
/