SQL> create or replace type ADDRESS_TY as object 2 (Street VARCHAR2(50), 3 City VARCHAR2(25), 4 State CHAR(2), 5 Zip NUMBER); 6 /类型已创建。SQL> 已写入文件 afiedt.buf 1 create or replace type PERSON_TY as object 2 (Name VARCHAR2(25), 3 Address ADDRESS_TY, 4* member function get_name return varchar2); SQL> @afiedt.buf类型已创建。SQL> create or replace type body person_ty as 2 member function get_name return varchar2 is 3 begin 4 return name; 5 end get_name; 6 end; 7 /类型主体已创建。SQL> create table customer( 2 customer_id number, 3 person person_ty);表已创建。SQL> insert into customer values( 2 1,person_ty('name',address_ty('aaa','bbb','cc',111)));已创建 1 行。提交完成。SQL> select customer_id,person_ty.get_name(person) from customer;CUSTOMER_ID ----------- PERSON_TY.GET_NAME(PERSON) -------------------------------------------------------------------------------- 1 name
http://www.itpub.net/179351.html
因此你在从表中读取数据时不能指定对象中的成员。
2 (Street VARCHAR2(50),
3 City VARCHAR2(25),
4 State CHAR(2),
5 Zip NUMBER);
6 /类型已创建。SQL>
已写入文件 afiedt.buf 1 create or replace type PERSON_TY as object
2 (Name VARCHAR2(25),
3 Address ADDRESS_TY,
4* member function get_name return varchar2);
SQL> @afiedt.buf类型已创建。SQL> create or replace type body person_ty as
2 member function get_name return varchar2 is
3 begin
4 return name;
5 end get_name;
6 end;
7 /类型主体已创建。SQL> create table customer(
2 customer_id number,
3 person person_ty);表已创建。SQL> insert into customer values(
2 1,person_ty('name',address_ty('aaa','bbb','cc',111)));已创建 1 行。提交完成。SQL> select customer_id,person_ty.get_name(person) from customer;CUSTOMER_ID
-----------
PERSON_TY.GET_NAME(PERSON)
--------------------------------------------------------------------------------
1
name