`

oracle OOP

阅读更多
关系数据库在不断地发展时,许多数据库引入了面向对象的思想,这其中以Oracle为代表,Oracle9i就号称面向对象数据库。 自Oracle9i以来,Oracle就不再是单纯的关系数据库管理系统,它在关系数据库模型的基础上,添加了一系列面向对象的特性。Oracle的对象体系遵从面向对象思想的基本特征,许多概念同C++,JAVA中类似,具有继承,重载,多态等特征,但又有自己的特点。

1、 Oracle面向对象的最基本元素是它的对象类型——Type。
下面开始写自定义对象类型( as object 必须关键字)
 create or replace type ADDRESS as  object
  (
      PROVINCE varchar(10 ),
      CITY varchar(20 ),
      STREET varchar(30 )
 ); 
创建表并使用以上对象类型ADDRESS 
 create table  STUDENTOBJ 
  (
     STUNAME varchar(20 ),
      STUADD  ADDRESS
  );

 
  向表中插入数据:
insert into STUDENTOBJ values('improviser',ADDRESS('广东省','广州市','江海大道');
通过别名对表进行查询
select  S.STUNAME S.ADDRESS.PROVINCE S.ADDRESS.CITY
S.ADDRESS.STREET  from  STUDENTOBJ S;
从上面的测试代码,可以很容易看到其与面向对象语言(比如Java)的差异,不必使用new创建实例,也没有了默认无参数构造器,默认使用定义的属性作为构造器参数,足以描述各种实体。另外,Type的属性没有private,protected,public的说法,所有的属性调用者都可以访问,即都是public。

2、Oracle中面向对象特征——继承(父类型必须声明为NOT FINAL,子类型使用关键字UNDER)
 1  创建父类型
  create or replace type PERSON as  object
   (
      PERNAME varchar(10 ),
      PERSEX varchar(2 )
  )not  final;
   
   子类型继承父类型
  create or replace  type STUDENT under PERSON
  (
     STUNO varchar(8 ),
     STUSCORE varchar(10 )
  );


由以上定义,其子类型中属性包含了父类型中所有属性。

3、可变数组
可变数组,是一种集合。一个可变数组是对象的一个集合,其中每个对象都具有相同的数据类型。可变数组的大小由创建时决定。在表中建立可变数组后,可变数组在主表中作为一个列对待。
   创建对象类型
  create or replace type ADDRESS as  object
   (
      PROVINCE varchar(10 ),
      CITY varchar(20 ),
   );
   
   创建ADDRESS可变数组
  create or replace type ADDRESS_LIST as varray(3) of  ADDRESS;
  
  创建表并使用可变数组ADDRESS_LIST
 create table  STUDENT 
  (
     STUNAME varchar(20 ),
      STUADDS ADDRESS_LIST
  );
  
  向表中插入数据
 insert into STUDENT values('improviser',ADDRESS_LIST(ADDRESS('广东省','广州市','江海大道' ),
                                           ADDRESS( ' 广东省 ' , ' 潮州市 ' , ' 潮枫路 ' )));
  
  查询(使用table函数将数据表格形式输出)
 select *from table(select s.STUADDS from STUDENT where STUNAME='improviser'); 

4、嵌套表
嵌套表是表中之表,一个嵌套表是某些行的集合,它在主表中表示为其中的一列。对主表中的每一条记录,嵌套表可以包含多个行。
1  定义嵌套表方法:
  create or replace type ADDRESS_TABLE as table of ADDRESS;
   
   基本对象类型、创建表、查询和插入数据都跟上面可变数组一样
   
  嵌套表更新(table转化为表再利用表别名操作列进行更新)
  update table(select S.STUADDS from STUDENT S where 
     S.STUNAME  =   ' improviser ' ) AD set  AD.PROVINCE  =   ' 北京 '   where  city  =   ' 广州 ' ;
  
 删除嵌套表记录
 delete   from   table ( select  S.STUADDS  from  STUDENT S 
   where  S.STUNAME  =   ' improviser ' ) AD where  AD.city  =   ' 潮州 市' ;



    比较:可变数组,查询速度快,但是更新困难得整体更新,适用与数据不修改情况,如医生处方。使用嵌套表可以对表中的表内容进行修改而无需进行整体更新操作。

4、对象表

   首先创建对象类型
  create or replace type OFFICETYPE as  object
   (
      id varchar(10 ),
      typename varchar(20 )
   );
   
   将对象类型转化为对象表
  create table office of  officetype;
  
  创建对象关系表(使用ref ,指示OID进行对象表关联)
 create table  worker
  (
     workerid varchar(10) primary key ,
     workername varchar(20 ),
     workeroffice ref officetpey scope is  office,
     phone varchar(20 )
  );
  
  使用deref 取得关联对象表相关内容
 select workerid,workername,deref(w.workeroffice),phone from  worker w 
   where  workerid  =   ' C001 ' ;
  结果为
 C001   张小明  OFFICETYPE('0001', '财务科')      010-12345 
  
  使用VALUE(别名)查询对象内容
 select value(o) from  office o;

 

5、对象视图
1  创建对象视图(通过OID连接dept)
 create view deptview of deptype with object oid(deptno) as select *from  dept;
 create view emp_view as select  make_ref(deptview,deptno) deptoid,empno,ename 
   from  emp;
分享到:
评论

相关推荐

    Oracle 入门文档2

    Oracle的面向对象编程(OOP)功能进一步增强了其灵活性,可以创建对象类型、对象表、嵌套表和集合类型。Package是封装相关对象和过程的一种机制,可以提升代码的组织性和模块化。 最后,文档提到了XML操作和与操作...

    Oracle PPT

    Oracle中的OOP(面向对象编程)概念,虽然Oracle主要是一个SQL数据库,但它也支持PL/SQL,一种结合了SQL和面向对象编程的编程语言。OOP在Oracle中的实现包括对象类型、对象变量、对象函数和过程、继承、封装和多态性...

    《oracle 教程》熟练使用主流数据库orcale

    本文将深入探讨其中的关键知识点:查询和SQL函数、锁和表分区以及Oracle中的面向对象编程(OOP)概念。 首先,查询和SQL函数是Oracle数据库管理的核心技能。SQL(结构化查询语言)是用于检索、更新和管理关系数据库...

    Oracle编程技术文档

    6. **对象导向编程(OOP)**:在`第5章oop.sql`中,可能讲解了Oracle的面向对象特性,如对象类型、对象变量、对象方法、继承和多态性等。 7. **锁和表分区**:`第3章锁和表分区.sql`可能涉及到数据库的并发控制和...

    JDK+TomCat+Eclipse+MyEclipse开发JSP和OOP程序

    ### JDK+TomCat+Eclipse+MyEclipse 开发 JSP 和 OOP 程序 #### 一、安装 在开始开发之前,首先需要确保所有必要的软件已经正确安装并配置好。按照以下顺序进行安装: 1. **JDK 1.4.2.09** - **下载与安装**: ...

    JAVA_JDBC面向对象分页(初步设计二之oracle)

    面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,强调用对象来表示现实世界中的实体。在Java中,类是对象的蓝图,包含了数据(字段)和操作这些数据的方法。为了实现分页查询,我们可以创建一个...

    【Java_项目篇】-Oracle课程设计Java源文件

    2. **面向对象编程(OOP)**:Java的面向对象特性体现在类、对象、封装、继承和多态等概念上。在这个系统中,可能会定义如`Room`(房间)、`Customer`(客户)、`Reservation`(预订)等类,通过对象来表示实体,...

    北大青鸟Oracle教程集

    PPT目录: 第一章 Oracle入门;...第五章 Oracle 中的 OOP 概念; 第六章 PL/SQL 简介; 第七章 异常和游标管理; 第八章 子程序和程序包; 第九章 数据库触发器和内置程序包; 第十章 集合和成员函数。

    Oracle PLSQL程序设计

    - **面向对象编程**:支持面向对象编程(OOP),提高了代码的复用性和可维护性。 - **跨平台兼容性**:可以在任何操作系统和平台上的Oracle数据库上运行,确保了良好的可移植性。 - **性能优化**:由于PL/SQL代码被...

    oracle数据库技术文档

    1、ORACLE 体系结构 2、sql_plus函数 3、sqlplus常用命令 4、sql 5、锁和表分区 6、数据库对象 7、oop 8、PLSQL 9、游标 10、程和函数 11、触发器 12、导入导出备份 13、如何正确利用rownum来限制查询所返回的行数 ...

    Oracle8i Application Developer’s Guide - Object-Relational Featu

    这种特性使得开发者可以使用面向对象编程(OOP)的思想来开发应用程序,从而提高开发效率和程序的可维护性。 三、对象关系型数据库 对象关系型数据库(Object-Relational Database)是一种特殊的关系型数据库,它...

    oracle(ppt)

    本教程将深入讲解Oracle中的游标、集合以及面向对象编程(OOP)的概念。 首先,游标允许我们逐行处理查询结果,分为静态游标、显式游标和隐式游标。静态游标通常与预编译的SQL语句一起使用,而显式和隐式游标则在PL...

    达内corejava+Oracle+JDBC+XML笔记

    CoreJava笔记可能包括了类和对象的创建、继承、封装、多态等OOP原则,以及集合类如ArrayList、LinkedList、HashMap的使用。Oracle笔记可能涉及数据库的安装配置、SQL语言的基本操作、表的设计以及事务处理等内容。...

    Oracle数据库学习笔记

    Oracle数据库是世界上最流行的数据库管理系统之一,它支持许多高级特性,如面向对象编程(OOP)概念,这使得在数据库中存储和操作复杂的数据结构成为可能。以下是对Oracle数据库学习笔记的详细阐述: 首先,同义词...

    Oracle Developer:第11章 PLSQL基础.pdf

    - **面向对象编程**:Oracle 8引入了面向对象编程(OOP)的特性,允许在PL/SQL中使用对象类型和继承。 ### 注意事项 - PL/SQL代码块必须严格符合语法规则。 - 正确处理异常,避免程序因未捕获的异常而中断。 - ...

    Oracle数据库详解

    此外,`第5章oop.sql`可能涉及到面向对象编程(OOP)概念在Oracle中的应用,如对象类型、对象表和嵌套表。 6. SQL Plus常用命令 `sqlplus常用命令.sql` 提供了SQL Plus中常用的交互命令,如`SELECT * FROM TABLE`, ...

    Java OOP内部测试机试题

    本题是一道关于Java面向对象程序设计(OOP)的内部测试试题,主要考察考生对Java类的设计、DAO模式的理解以及数据库操作的能力。以下是该试题涉及的主要知识点: 1. **Java语言基础**:试题明确指出实现语言为Java...

    Java高端培训教材_Oracle实用教程

    1. **Java基础**:包括Java语法、面向对象编程(OOP)概念,如类、对象、继承、多态和封装,以及异常处理和集合框架。 2. **Java进阶**:涉及线程并发、反射机制、JVM内存模型、垃圾回收机制,以及Java泛型和模块化...

    java sql oracle javascript

    Java是一种广泛使用的高级编程语言,它支持面向对象编程(OOP)。Java的设计目标之一是实现“一次编写,到处运行”(Write Once, Run Anywhere, WORA)的原则,这得益于Java虚拟机(JVM)的存在。Java被广泛应用于企业级...

Global site tag (gtag.js) - Google Analytics