Oracle 11g数据库管理与开发基础教程 教学课件 ppt 作者 袁鹏飞 第16章

上传人:E**** 文档编号:89369854 上传时间:2019-05-24 格式:PPT 页数:43 大小:295KB
返回 下载 相关 举报
Oracle 11g数据库管理与开发基础教程 教学课件 ppt 作者  袁鹏飞 第16章_第1页
第1页 / 共43页
Oracle 11g数据库管理与开发基础教程 教学课件 ppt 作者  袁鹏飞 第16章_第2页
第2页 / 共43页
Oracle 11g数据库管理与开发基础教程 教学课件 ppt 作者  袁鹏飞 第16章_第3页
第3页 / 共43页
Oracle 11g数据库管理与开发基础教程 教学课件 ppt 作者  袁鹏飞 第16章_第4页
第4页 / 共43页
Oracle 11g数据库管理与开发基础教程 教学课件 ppt 作者  袁鹏飞 第16章_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《Oracle 11g数据库管理与开发基础教程 教学课件 ppt 作者 袁鹏飞 第16章》由会员分享,可在线阅读,更多相关《Oracle 11g数据库管理与开发基础教程 教学课件 ppt 作者 袁鹏飞 第16章(43页珍藏版)》请在金锄头文库上搜索。

1、,Oracle 11g数据库管理与开发基础教程,授课教师: 职务:,第16章 对象,课程描述 从Oracle 8i开始,面向对象技术被引入到Oracle数据库系统中。 用户可以定义对象类型以及方法、对象表、对象关系表、对象视图等。本章将介绍Oracle数据库中对象类型的创建和使用、对象表的使用、对象类型的继承与重载、大对象的使用等。,本章知识点,对象的基本概念 对象类型的创建和使用 对象类型的继承与重载,16.1 对象概述,对象是一组数据和操作的封装,对象的抽象就是类。 面向对象的主要特征如下: 封装 继承 多态 在Oracle数据库系统中,对象是对象类型的一个实例;对象类型是一种结构,它定义

2、了一个属性集和在这些属性上进行的操作,即方法。,16.2 创建对象类型,对象类型描述了与特殊种类对象关联的属性和方法,其创建包括两个方面: 对象类型头。包括对象类型的属性及其成员方法的说明,使用CREATE OR REPLACE TYPEAS OBJECT语句创建; 对象类型体。包括对象类型具体的实现,使用CREATE TYPE BODY语句创建。对象类型体是可选的,如果在对象类型头没有声明成员方法,则不需要创建对象类型体。,创建对象类型头的语法如下: CREATE OR REPLACE TYPE schema.type_name FORCE AUTHID CURRENT_USER | DEF

3、INER IS|AS OBJECT | UNDER supertype EXTERNAL NAME java_ext_name LANGUAGE JAVA USING SQLData | CustomDatum | OraData ( attribute1 datatype1 sqlj_object_type_attr , attribute2 datatype2 sqlj_object_type_attr, | , element_spec, ) NOT FINAL | INSTANTIABLE;,其中: type_name为对象类型名; AUTHID CURRENT_USER|DEFINE

4、R子句指定对象类型的执行权限,是CURRENT_ USER(当前用户),还是DEFINER(所有者); EXTERNAL NAME子句用于创建一个SQLJ对象类型,通过SQLJ对象类型,用户可以把一个Java类映射到用户定义的SQL类型; attribute为属性名; sqlj_object_type_attr子句用于说明与SQLJ对象类型的属性对应的Java域中的外部名称; element_spec声明对象类型的方法; UNDER子句、NOT FINAL | INSTANTIABLE子句为对象类型的继承特性。,创建对象类型体的语法如下: CREATE OR REPLACE TYPE BODY

5、 schema.type_name IS|AS PROCEDURE name (parameter_declaration) IS|AS declare_section; BEGIN statement; EXCEPTION exception_handler; END name; | FUNCTION name (parameter_declaration) RETURN datatype IS|AS declare_section; BEGIN statement;,EXCEPTION exception_handler; END name; | FINAL INSTANTIABLE CO

6、NSTRUCTOR FUNCTION datatype (SELF IN OUT datatype, parameter datatype, ) RETURN SELF AS RESULT IS|AS declare_section; BEGIN statement; EXCEPTION exception_handler; END ; | MAP|ORDER MEMBER function_decl_in_type END;,其中: PROCEDURE、FUNCTION|、CONSTRUCTOR FUNCTION为对象类型方法的具体实现,即过程、函数; MEMBER关键字用来定义对象类型中需

7、要访问的特定对象实例的方法,MEMBER方法只能由对象实例调用,不能由对象类型调用。,例1,创建作者对象类型,其属性分别为author_id(作者ID)、author_fname(名)、author_lname(姓)、phone(电话)和address(地址)。 BOOKS_PUBorcl_dbs CREATE OR REPLACE TYPE author_type AS OBJECT( 2 author_id VARCHAR2(15), 3 author_fname VARCHAR2(20), 4 author_lname VARCHAR2(40), 5 phone CHAR(20), 6

8、address address_type) 7 / 类型已创建。,例2,创建图书对象类型。 BOOKS_PUBorcl_dbs CREATE OR REPLACE TYPE book_type AS OBJECT ( 2 book_num NUMBER(6), 3 book_name VARCHAR2(60), 4 book_category CHAR(10), 5 author author_type, 6 publish VARCHAR2(50), 7 price NUMBER(8,2), 8 content VARCHAR2(2000), 9 MEMBER FUNCTION get_se

9、ll_count (p_bnum NUMBER) RETURN NUMBER) 10 / 类型已创建。,创建对象类型体,实现book_type对象类型方法get_sell_count的定义。 BOOKS_PUBorcl_dbs CREATE OR REPLACE TYPE BODY book_type AS 2 MEMBER FUNCTION get_sell_count (p_bnum NUMBER) RETURN NUMBER 3 IS 4 CURSOR c_qty IS 5 SELECT qty FROM orders WHERE book_id=p_bnum; 6 v_count NU

10、MBER(38) := 0; 7 BEGIN 8 FOR c_q IN c_qty LOOP 9 v_count := v_count + c_q.qty; 10 END LOOP; 11 RETURN v_count; 12 END; 13 END; 14 / 类型主体已创建。,一旦创建了对象类型,可以使用DESCRIBE命令来查看对象类型的定义信息。例如, BOOKS_PUBorcl_dbs DESC address_type 名称 是否为空? 类型 - - - ADDR VARCHAR2(50) CITY VARCHAR2(20) STATE CHAR(10) ZIP CHAR(10),

11、16.3 对象的使用,在Oracle数据库中创建了对象类型后,可以在数据表中定义列时将对象类型持久地存储在数据库中,并且使用SQL语句对它们进行操作。 Oracle数据库中对象类型的使用,包括表中使用对象和PL/SQL块中使用对象。,16.3.1 数据库表中使用对象,数据库表中使用对象主要有3种方式: 定义列的类型为对象类型,此时将存储在该列中的对象称为列对象; 定义表的一行为对象类型,这种表被称作对象表; 使用对象引用对象表中的行对象,这种引用被称作对象引用(REFS)。,列对象 如果在一个基本关系表中除了基本的数据库类型列以外,还包含一个或多个对象类型的列定义,此时向表中插入数据,必须使用

12、构造函数为新的对象提供属性值。 例如,创建一个ol_books表,包含一列book,其类型为book_type。然后,使用INSERT语句向books表中插入2条记录。,BOOKS_PUBorcl_dbs CREATE TABLE ol_books ( 2 book book_type, 3 adv INTEGER 4 ); 表已创建。 BOOKS_PUBorcl_dbs INSERT INTO ol_books (book, adv) 2 VALUES (book_type(100001, 数据库原理, XX-COM, 3 author_type(810001, 伟, 高, 010-6739

13、2101, address_type( 4 北区二里200号101室,北京,北京,101000), 清华大学出版社, 5 40.8, 该书系统地介绍了), 500000); 已创建 1 行。 BOOKS_PUBorcl_dbs INSERT INTO ol_books (book, adv) 2 VALUES (book_type(100002, Oracle 10g入门与提高, XX-COM, 3 author_type(810002, 鸿远,陈,021-85213901, address_type( 4 西藏路1200号1501室,上海,上海,211050),电子科技出版社, 5 35.9

14、, 该书系统地介绍了), 120000); 已创建 1 行。,针对这种表的查询需要注意,列对象的前面必须添加表别名作为前缀。例如: BOOKS_PUBorcl_dbs SELECT ol.book.book_name 2 FROM ol_books ol 3 WHERE ol.book.book_num=100002; BOOK.BOOK_NAME - Oracle 10g入门与提高,对象表 对象表是由组成整个数据库行的行对象组成的,即使用对象类型定义整个表。 创建对象表的语法为: CREATE TABLE table_name OF object_type_name; 其中: table_n

15、ame为将要创建的表的名字; object_type_name为对象表基于的对象类型的名称。,例如,创建一个名为ob_books的对象表以及名为ob_address的对象表,它们分别存储book_type类型的对象和address_type类型的对象。 BOOKS_PUBorcl_dbs CREATE TABLE ob_books OF book_type; 表已创建。 BOOKS_PUBorcl_dbs CREATE TABLE ob_address OF address_type; 表已创建。,对象表的DML操作 向对象表插入记录 BOOKS_PUBorcl_dbs INSERT INTO ob_books 2 VALUES (book_type(100001, 数据库原理, XX-COM, 3 author_type(810001, 伟, 高, 010-67392101, address_type( 4 北区二里200

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号