创建带有函数的对象类型
创建对象类型头/规范
语法
create 【or replace】 type type_name as object (
column1 datatype[,column2 datatype,…]
member function method_name(args_list) return return_type;
)
type_name是对象类型的名称
column1是属性名称,
datatype是属性数据类型
member function:表示定义一个函数,也可是使用member procedure,表示定义的是一个存储过程,没有返回值.
注意:
method_name:函数名称
args_list:函数的参数列表
return_type:函数的返回值类型
1如果定义对象类型头时没有定义方法,则不需要建立对象类型体。
2定义对象类型最少要包含一个属性,最多包含1000个属性。
3定义时必须提供属性名和数据类型,但不能指定默认值和not null。
4属性类型不能是以下这些类型。
long ,long raw,nchar,nclob,nvarchar2,rowid,urowid,以及%type和%rowtype
举例
create or replace type class3 as object (
id number,
name varchar2 ( 20 ),
member function get_name(no varchar2) return varchar2
) ;
对象体的创建
create or replace type body type_name as
member function method_name return return_type{as | is}
variable declareations….;
begin
…
return value;
end;
end;
注意
type_name和method_name要与对象类型中的type_name和method_name一一对应
variable declareations:说明变量,并指明变量的数据类型
举例
create or replace type body class3 as
member function get_name(no varchar2) return varchar2 as
name varchar2(20);
begin
select sname into name from zhou.student where sno=no ;
return name;
end;
end;
带有函数的对象类型的使用
create table class_table2 (
id number,
deptno varchar2 ( 20 ),
class3 class3--使用对象类型class3作为表class_table2的属性
) ;
insert into class_table2 values(1,'1',class3(10,'丽丽'));
select st.id,st.class3.name,st.class3.get_name('s001') from class_table2 st