创建带有函数的对象类型+创建对象类型头/规范+对象体的创建+带有函数的对象类型的使用

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

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值