创建带有函数的对象类型
创建对象类型头/规范
语法
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

这里写图片描述

posted on 2017-06-02 15:50  2637282556  阅读(103)  评论(0编辑  收藏  举报