资源描述:
《Oracle 11g数据库管理与开发基础教程 教学课件 作者 袁鹏飞 第16章.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Oracle11g数据库管理与开发基础教程授课教师:职务:第16章对象课程描述从Oracle8i开始,面向对象技术被引入到Oracle数据库系统中。用户可以定义对象类型以及方法、对象表、对象—关系表、对象视图等。本章将介绍Oracle数据库中对象类型的创建和使用、对象表的使用、对象类型的继承与重载、大对象的使用等。本章知识点对象的基本概念对象类型的创建和使用对象类型的继承与重载16.1对象概述对象是一组数据和操作的封装,对象的抽象就是类。面向对象的主要特征如下:封装继承多态在Oracle数据库系统中,对象是对象类型的一个实
2、例;对象类型是一种结构,它定义了一个属性集和在这些属性上进行的操作,即方法。16.2创建对象类型对象类型描述了与特殊种类对象关联的属性和方法,其创建包括两个方面:对象类型头。包括对象类型的属性及其成员方法的说明,使用CREATEORREPLACETYPE…ASOBJECT语句创建;对象类型体。包括对象类型具体的实现,使用CREATETYPEBODY…语句创建。对象类型体是可选的,如果在对象类型头没有声明成员方法,则不需要创建对象类型体。创建对象类型头的语法如下:CREATE[ORREPLACE]TYPE[schema.]t
3、ype_name[FORCE][AUTHID{CURRENT_USER
4、DEFINER}]{IS
5、AS}OBJECT
6、UNDERsupertype[EXTERNALNAMEjava_ext_nameLANGUAGEJAVAUSING{SQLData
7、CustomDatum
8、OraData}](attribute1datatype1[sqlj_object_type_attr][,attribute2datatype2[sqlj_object_type_attr],…]
9、[,element_spec,…])[[NOT]{FI
10、NAL
11、INSTANTIABLE}];其中:type_name为对象类型名;AUTHIDCURRENT_USER
12、DEFINER子句指定对象类型的执行权限,是CURRENT_USER(当前用户),还是DEFINER(所有者);EXTERNALNAME子句用于创建一个SQLJ对象类型,通过SQLJ对象类型,用户可以把一个Java类映射到用户定义的SQL类型;attribute为属性名;sqlj_object_type_attr子句用于说明与SQLJ对象类型的属性对应的Java域中的外部名称;element_spec声明对象类
13、型的方法;UNDER子句、NOTFINAL
14、INSTANTIABLE子句为对象类型的继承特性。创建对象类型体的语法如下:CREATE[ORREPLACE]TYPEBODY[schema.]type_name{IS
15、AS}{{PROCEDUREname[(parameter_declaration)]{IS
16、AS}[declare_section;]BEGINstatement;EXCEPTIONexception_handler;END[name];
17、FUNCTIONname[(parameter_declaration)
18、]RETURNdatatype{IS
19、AS}[declare_section;]BEGINstatement;EXCEPTIONexception_handler;END[name];
20、[FINAL][INSTANTIABLE]CONSTRUCTORFUNCTIONdatatype[([SELFINOUTdatatype,]parameterdatatype,…)]RETURNSELFASRESULT{IS
21、AS}[declare_section;]BEGINstatement;EXCEPTIONexception_han
22、dler;END;}
23、{MAP
24、ORDER}MEMBERfunction_decl_in_type}END;其中:PROCEDURE、FUNCTION
25、、CONSTRUCTORFUNCTION为对象类型方法的具体实现,即过程、函数;MEMBER关键字用来定义对象类型中需要访问的特定对象实例的方法,MEMBER方法只能由对象实例调用,不能由对象类型调用。例1,创建作者对象类型,其属性分别为author_id(作者ID)、author_fname(名)、author_lname(姓)、phone(电话)和address(地址)
26、。BOOKS_PUB@orcl_dbs>CREATEORREPLACETYPEauthor_typeASOBJECT(2author_idVARCHAR2(15),3author_fnameVARCHAR2(20),4author_lnameVARCHAR2(40),5phoneCHAR(20),6ad