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

来源:互联网 发布:mysql与sqlserver区别 编辑:程序博客网 时间:2024/06/05 15:35

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