您的位置:首页 > 其它

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

2017-06-02 15:49 471 查看
创建带有函数的对象类型

创建对象类型头/规范

语法

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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐