`
duoluohua
  • 浏览: 13035 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle中的面向对象OOP

 
阅读更多

Oracle中的面向对象OOP

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

1、
Oracle面向对象的最基本元素是它的对象类型——Type
下面开始写自定义对象类型(
as object 必须关键字)
1createorreplacetypeADDRESSas object
2
(
3PROVINCEvarchar(10
),
4CITYvarchar(20
),
5STREETvarchar(30
)
6);

创建表并使用以上对象类型ADDRESS
1createtable STUDENTOBJ
2
(
3STUNAMEvarchar(20
),
4
STUADDADDRESS
5
);
6

7 向表中插入数据:
8insertintoSTUDENTOBJvalues('improviser',ADDRESS('广东省','广州市''江海大道');

通过别名对表进行查询
1select S.STUNAMES.ADDRESS.PROVINCES.ADDRESS.CITY
2 S.ADDRESS.STREET
from STUDENTOBJS;

从上面的测试代码,可以很容易看到其与面向对象语言(比如Java)的差异,不必使用new创建实例,也没有了默认无参数构造器,默认使用定义的属性作为构造器参数,足以描述各种实体。另外,Type的属性没有private,protected,public的说法,所有的属性调用者都可以访问,即都是public。

2、Oracle中面向对象特征——继承(父类型必须声明为NOT FINAL,子类型使用关键字UNDER)

1 创建父类型
2createorreplacetypePERSONas
object
3
(
4PERNAMEvarchar(10
),
5PERSEXvarchar(2
)
6)not
final;
7

8 子类型继承父类型
9createorreplace
typeSTUDENTunderPERSON
10
(
11STUNOvarchar(8
),
12STUSCOREvarchar(10
)
13
);

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

3、可变数组
可变数组,是一种集合。一个可变数组是对象的一个集合,其中每个对象都具有相同的数据类型。可变数组的大小由创建时决定。在表中建立可变数组后,可变数组在主表中作为一个列对待。
1 创建对象类型
2createorreplacetypeADDRESSas
object
3
(
4PROVINCEvarchar(10
),
5CITYvarchar(20
),
6
);
7

8 创建ADDRESS可变数组
9createorreplacetypeADDRESS_LISTasvarray(3)of
ADDRESS;
10

11 创建表并使用可变数组ADDRESS_LIST
12createtable
STUDENT
13
(
14STUNAMEvarchar(20
),
15
STUADDSADDRESS_LIST
16
);
17

18 向表中插入数据
19insertintoSTUDENTvalues('improviser',ADDRESS_LIST(ADDRESS('广东省','广州市','江海大道'
),
ADDRESS(
' 广东省 ' , ' 潮州市 ' , ' 潮枫路 '
)));
20

21 查询(使用table函数将数据表格形式输出)
22select*fromtable(selects.STUADDSfromSTUDENTwhereSTUNAME='improviser');

4、嵌套表
嵌套表是表中之表,一个嵌套表是某些行的集合,它在主表中表示为其中的一列。对主表中的每一条记录,嵌套表可以包含多个行。

1 定义嵌套表方法:
2createorreplacetypeADDRESS_TABLEastableof
ADDRESS;
3

4 基本对象类型、创建表、查询和插入数据都跟上面可变数组一样
5

6嵌套表更新table转化为表再利用表别名操作列进行更新
7updatetable(selectS.STUADDSfromSTUDENTSwhere

8 S.STUNAME = ' improviser ' )AD set AD.PROVINCE = ' 北京 ' where city = ' 广州 ' ;
9

10 删除嵌套表记录
11 delete from table ( select S.STUADDS from
STUDENTS
12
where S.STUNAME = ' improviser ' )AD where AD.city = ' 潮州 市'
;
13

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

4、对象表

1 首先创建对象类型
2createorreplacetypeOFFICETYPEas
object
3
(
4idvarchar(10
),
5typenamevarchar(20
)
6
);
7

8 将对象类型转化为对象表
9createtableofficeof
officetype;
10

11 创建对象关系表(使用ref,指示OID进行对象表关联)
12createtable
worker
13
(
14workeridvarchar(10)primarykey
,
15workernamevarchar(20
),
16workerofficerefofficetpeyscopeis
office,
17phonevarchar(20
)
18
);
19

20 使用deref取得关联对象表相关内容
21selectworkerid,workername,deref(w.workeroffice),phonefrom
workerw
where workerid = ' C001 '
;
22
结果为
23C001张小明OFFICETYPE('0001','财务科') 010-12345

24
25 使用VALUE(别名)查询对象内容
26selectvalue(o)from
officeo;
27


5、对象视图

1 创建对象视图(通过OID连接dept)
2createviewdeptviewofdeptypewithobjectoid(deptno)asselect*from
dept;
3createviewemp_viewasselect
make_ref(deptview,deptno)deptoid,empno,ename
4 from
emp;


好了,有关Oracle中面向对象的内容就简要叙述这么多了,虽然现在很少使用到,但在以后有用到之处有一定的参考作用。

分享到:
评论

相关推荐

    Oracle 入门文档2

    Oracle 入门文档 Oracle笔记 一、oracle的安装、sqlplus的使用 ...Oracle笔记 十二、PL/SQL 面向对象oop编程 Oracle笔记 十三、PL/SQL面向对象之package Oracle笔记 十四、查询XML操作、操作系统文件

    Oracle 入门文档

    Oracle 入门文档 Oracle笔记 一、oracle的安装、sqlplus的使用 ...Oracle笔记 十二、PL/SQL 面向对象oop编程 Oracle笔记 十三、PL/SQL面向对象之package Oracle笔记 十四、查询XML操作、操作系统文件

    xmljava系统源码-database-oop:结构化数据存储系统的面向对象封装

    结构化数据存储系统的面向对象封装 博客地址: 自动构建: 欢迎参与:请骚扰 当前参与人:、、、、 预计封装的数据库 arangodb db2 elasticsearch[完成初步] mongodb[进行中] mysql oracle[进行中] postgresql redis...

    IOIF面向项目的开源开发框架

    软件开发思想从面向过程到OOP面向对象,再到AOP面向方面,每一次新思想的提出都能够降低对程序员的要求,加快软件开发的进度。该框架在实现的过程中提出一个新的概念IOP“面向项目的开发”。在这个思想的指导下,...

    OOP-Resources:设置OOP课程所需的各种软件应用程序的说明

    有关CS F213(面向对象编程)最终项目的详细信息,该视频详细介绍了要提交的可交付成果,工作部门,项目时间表以及一般建议: 本文档包含有关如何设置OOP课程中所需的各种软件应用程序的说明。 1. Java SE SDK 从...

    Java技术参考手册,自学手册,开发人员实用手册

    Java 面向对象编程三大特性:封装、继承、多态 41 封装 41 继承 41 多态 41 技术应用 42 Java快速入门 43 安装JDK 8 43 安装JDK 13 51 设置环境变量 52 JDK 53 安装Eclipse 54 安装简体中文语言包 64 使用Eclipse 66 ...

    IOIF基于开源技术的JAVA开发框架

    软件开发思想从面向过程到OOP面向对象,再到AOP面向方面,每一次新思想的提出都能够降低对程序员的要求,加快软件开发的进度。该框架在实现的过程中提出一个新的概念IOP“面向项目的开发”。在这个思想的指导下,...

    Java语言教程案例.docx

    **面向对象编程(OOP):** - 类和对象 - 继承、封装、多态 #### 3. **流程控制:** - 条件语句(if-else) - 循环语句(for、while) #### 4. **异常处理:** - try-catch块 #### 5. **集合框架:** - ...

    Perl 实例精解(第三版).pdf

    13.5.2 标准Perl库中面向对象的模块 13.5.3 使用标准Perl库中的模块 练习13 这一课的对象是什么 练习14 函数Pod中的Perl 第14章 tie函数,DBM文件和数据库挂钩 14.1 连接变量与类 14.1.1 tie函数 ...

    vistra:算法和数据结构可视化

    方法:面向对象的分析与设计OOAD,面向对象的编程OOP。 技术:Oracle Java,带有Apache Maven和Ant的Eclipse项目,Java Swing UI框架,Apache Commons IO,net.datastructures,Java通用网络/图形框架JUNG,GraphML...

    软件工程师Java班课程

    掌握Java语言规范、面向对象编程基础(OOA/OOP) J2SE平台Java程序设计 Java AWT图形界面程序开发,Swing图形程序设计, Socket网络应用程序设计,对象序列化,Java 常用数据结构,Applet,高级I/O流和文件编程,多...

    java核心基础个人笔记

    2OOP面向对象 3SE(I-IV)API字符串 4插Bin二进制 5oracle数据库 6JDBC核心API 7webbasic-WEB前端 8jQuery选择器 9-1插reflect-反射 9servlet基础$jsp基础 10spring容器$Mybatis框架 11ajax框架 12MyBatis动态SQL 13 ...

    二十三种设计模式【PDF版】

    事实上,那本书现在已成为几乎所有 OOP(面向对象程 序设计)程序员都必备的参考书。(在国外是如此)。 GoF 的《设计模式》是所有面向对象语言(C++ Java C#)的基础,只不过不同的语言将之实现得更方便地使用。 GOF 的...

    vfp6.0系统免费下载

    Project 对象拥有“项目信息”对话框中所有信息的相关属性,其中包括文件和服务程序的集合。 由于开发人员常希望与项目有关的各种事件进行交互,比如添加文件或进行连编,因此需要创建一个新类 (ProjectHook) 来...

    北大青鸟ACCP5.0软件工程师教学PPT和源代码 内部光盘下载地址

    1、.NET企业级应用开发 2、Java企业级应用开发 3、ORACLE数据库的维护、管理和应用 4、面向对象分析与设计 5、软件项目管理 主要课程 使用ASP.NET技术开发网上书店、使用Ajax和Web Service重构网上书店、开发基于...

    北大青鸟ACCP5.0软件工程师教学PPT和源代码 内部光盘

    1、.NET企业级应用开发 2、Java企业级应用开发 3、ORACLE数据库的维护、管理和应用 4、面向对象分析与设计 5、软件项目管理 主要课程 使用ASP.NET技术开发网上书店、使用Ajax和Web Service重构网上书店、开发基于...

    《ACCP 软件工程师 5.0 教学PPT和源代码 内部光盘》(Aptech ACCP 5.0 PPT and Resource)[光盘镜像]

    1、.NET企业级应用开发 2、Java企业级应用开发 3、ORACLE数据库的维护、管理和应用 4、面向对象分析与设计 5、软件项目管理 主要课程 使用ASP.NET技术开发网上书店、使用Ajax和Web Service重构网上书店、开发基于...

    asp.net知识库

    在Asp.net中如何用SQLDMO来获取SQL Server中的对象信息 使用Relations建立表之间的关系并却使用PagedDataSource类对DataList进行分页 通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和...

    java二八杠源码-Java-BasicOOPProblemSolving:Java基本问题解决

    面向对象—— 现实生活 er sathe 对象 gulo mil reke amara 编程 korbo。 Java 支持的基于 Web 的应用程序。 健壮的语言: - 这意味着 eti akti 强大的序列语言。 错误处理 ba 异常处理 er 灵活。 安全的编程语言。 ...

Global site tag (gtag.js) - Google Analytics