2013-08-30 79 views
0

我在oracle数据库中有以下对象表。在oracle中嵌套表和对象类型有什么区别?

create type deposit_ty as object 
(
    depno number(6), 
    depcategory ref depcategory_ty, 
    amount number(6), 
    period number(2) 
); 

create type deposit_ntty as table of deposit_ty; 

create type address_ty as object 
(
    homeno number, 
    street varchar(30), 
    city varchar(30) 
); 

create type customer_ty as object 
(
    cusid char(4), 
    custname varchar(40), 
    address address_ty, 
    dob DATE, 
    deposits deposit_ntty 
); 

任何一个可以告诉是什么customer_ty对象表address列,deposits之间的区别?

回答

1

对象类型/抽象数据类型/记录就像行或元组:它包含一组有序的属性。要填充address,您必须为每个homeno,streetcity设置一个且仅有一个值。

嵌套表就像一个表:它包含一组无序的行。通常,嵌套表只包含一组简单值,如数字。在你的例子中,它是一组对象类型。要填充deposits,您可以创建任意数量的deposit_ty

例如:

declare 
    customer customer_ty := 
    customer_ty(
     'ABC', 
     'Name', 
     address_ty('123', 'fake street', 'Springfield'), 
     sysdate, 
     deposit_ntty(
     deposit_ty(1, null, 100, 1), 
     deposit_ty(2, null, 200, 2) 
    ) 
    ); 
begin 
    null; 
end; 

此外,你可能想使用的VARCHAR2代替VARCHARCHAR。如果还不算太晚,抛弃所有这些东西,像其他人一样使用表格。

相关问题