Oracle的面向对象技术基础入门

Oracle超详细(数据库编程) 一、数据类型 二、运算部分 三、DDL\DQL\DML 四、函数 五、PLSQL 六、SQL优化 阅读详情
  一、概述

  对象是Oracle8i以上版本中的一个新的特性,对象实际是对一组数据和操作的封装,对象的抽象就是类。在面向对象技术中,对象涉及到以下几个重要的特性:

   封装性

  通过对数据和操作的封装,将用户关心的数据和操作暴露出来作为接口,其他数据和操作则隐藏到对象内部,这样便于用户使用和维护。

   继承性

  对象具有继承性,通过这一特性可以增强程序的可扩展性,适合大型项目的开发。

   多态性

  同一操作在运行时刻有不同的对象来引用,则其执行结果是不一样的。这一特性称之为多态性。

  正是因为面向对象的诸多优势,Oracle公司在8.0版本以后就加入了对这一特性的全面支持,下来的部分重点讲述在Oracle中的面向对象程序设计。

  二、Oracle中的面向对象程序设计

  既然对象具有这么多的优点,那么在Oracle数据库如何引用它呢?Oracle中的对象定义分两步进行:

  首先定义对象类型。定义对象类型跟定义包类型完全一样,即分为对象类型头(或称为对象规范,specification)和对象类型体(body)。对象类型头包括了对象类型的属性和方法的声明,而对象类型体则包含了对象类型具体的实现。

  例如,定义一个empObj对象类型,代码如下:

create or replace type empObj as object (
emp_id number(5),
emp_name varchar2(20),
emp_salary number(4),
--object’s function
member function addsalary(ext_salary number) return varchar2,
);
--object's body
create or replace type body empObj as
member function addsalary
return varchar2 is
begin
emp_salary :=emp_salary +ext_salary ;
return to_char(emp_salary);
end addsalary;
end;

  特别需要注意的是,如果对象没有成员函数部分,那么此对象类型的定义只有对象类型头部分。

  然后定义对象实例。定义了对象类型后就可以直接定义它的实例了,比如定义一个empObj实例对象,代码如下:

v_empObj1 empObj;

  经过这两步之后就可以引用对象实例的属性和方法了,引用符号为“.”,比如

v_empObj1.emp_id; //引用emp_id属性
v_empObj1.addsalary(300); //引用addsalary方法

  另外,在初始化无成员函数的对象时可以直接以构造函数的形式进行初始化,注意,这个时候不需显式的定义构造函数。比如,初始化上面v_empObj1对象(假设无成员函数的情况下才能进行这种初始化操作), 代码如下:

v_empObj1 empObj:=empObj(10005,’jack’,6500);

  由于Oracle数据库是关系型数据库,其存储数据是以二维表的形式进行的,而对象是对数据和操作进行封装的一个实体,其存储信息往往是多维信息,那么对象在Oracle数据库中的存储是如何进行的呢?(这里补充一点,PL/SQL程序块中声明的对象是临时对象,在超出其作用区域后系统将自动收回其分配的资源,但是如果需要保存对象的信息,就必须将其存储在数据库中)

  事实上,对象在Oracle数据库中的存储形式分为两种:

  1. 对象列。即可以将数据表中的列的数据类型定义为一个对象类型,这样对象就可以存储在数据列中了。比如定义一个表table1,其中emp列可以用来存储对象。

create table table1
(
id number(2);
emp empObj;
);

  2. 对象行。即可以创建一个对象表,其中每一列就表示对象中的一个属性,这样一条行记录就是一个对象了。比如定义一个emp表如下:

create table emp
(
emp_id number(5);
emp_name varchar2(20);
emp_salary number(4);
);

  这样emp表的一个记录就是一个empObj对象,插入一个表的操作就可以为:

insert into emp values (empObj(10006,'marry',5000));


  注意,这里表中列类型与对象的属性类型应该一一对应,另外这样存储将忽略对象的成员函数的信息。

  三、对象操作与比较

  可以采用DML语句对对象进行操作,其操作的语法跟一般的数据类型完全一样,比如在table1表中返回对象为empObj(10002,’mike’,3000)的记录:

select * from table1 where emp=empObj(10002,'mike',3000);

  如果需要进行对象的大小比较,那么用一般的方法就很难处理,毕竟对象含有一组属性,无法进行组合比较。可以采用向对象加入map方法和order方法来解决此问题,前者是通过将对象某一属性返回代表对象的值班来比较大小,后者是通过比较两个对象之间某个属性的值班来获取对象的大小。由于两者的相似性,这里以用途更广的map成员函数为为例示范如下:

create or replace type empObj as object (
 emp_id number(5),
 emp_name varchar2(20),
 emp_salary number(4),
 --object’s function
 member function addsalary(ext_salary number) return varchar2,
 map member function ID return number
);
--object's body
create or replace type body empObj as member function addsalary return varchar2 is
begin
 emp_salary :=emp_salary +ext_salary ;
 return to_char(emp_salary);
end addsalary;
--map function's body
map member function ID return number is
begin
 return emp_id;
 end ID;
end;

  这样定义了map函数后,对empObj对象大小的比较实质转化为对各个对象的emp_id属性大小的比较,在实际操作中,应该根据实际情况来返回关心的数据,以进行对象大小比较的操作。

  四、小结

  通过前面内容的介绍,大家应该对Oracle数据库的面向对象的特性有一个初步的认识,充分利用Oracle的这一特性,可以将面向对象的重用性,可扩展性等优点引入到数据库中,提高了数据库的运行性能。

Java编程入门:从基础语法到面向对象 计算机软件作为现代信息技术的核心,可分为系统软件和应用软件两大类。Java作为主流的面向对象编程语言,凭借其跨平台特性(通过JVM实现)和丰富的生态系统,在企业级开发、移动应用和大数据领域广泛应用。理解Java基础语法、掌握面向对象编程思想是入门的关键,包括类与对象、封装继承多态等核心概念。通过搭建JDK开发环境、使用IntelliJ IDEA等工具,开发者可以快速开始Java编程实践。对于初学者而言,从Hello World程序入手,逐步学习变量、运算符、控制流程等基础语法,是掌握Java编程的有效路径。 阅读详情

相关推荐

Oracle面向对象编程的探索

oracle的面向对象编程技术实现,让你可以像C#、C++、Java一样理解oracle

Oracle PL/SQL高级编程(第一弹:面向对象编程)

PL/SQL中对象的组成结构 PL/SQL中的对象类型是一种自定义的复合类型,与包的定义很相似,由两部分组成: - 对象类型规范:是对象与应用的接口,用于定义对象的公用属性和方法。 - 对象类型体:用于实现对象类型规范所定义的公用方法。 在对象类型规范中定义对象属性时,必须要提供属性名和数据类型,对象类型属性可以使用多数Oracle数据类型,但是不能使用以下类型: - LONG和LONG...

艺术就是爆炸的专栏 2193

kaggle项目:纽约出租车行程时间NYC Taxi Trip Duration

纽约出租车形成时间预测(NYC Taxi Trip Duration)是Kaggle中的一个Playground竞赛。比赛数据集基于2016年纽约市黄色出租车行程记录数据,需要建立一个模型,根据单个行程属性,预测测试集中每次行程的持续时间。Kaggle项目模型XGBoost,评价指标RMSLE。

weixin_42113929的博客 2790

oracle面向对象的数据类型,Oracle面向对象编程OOP

1.2.6 嵌套表AS TABLE OF嵌套表是表中之表,一个嵌套表是某些行的集合,它在主表中表示为其中的一列。对主表中的每一条记录,嵌套表可以包含多个行。语法如下:CREATE OR REPLACE TYPE table_name AS TABLE OF type;语法说明:1. table_name :嵌套表名。2. type:数组的类型,可以是基本变量,如varchar2,integer...

weixin_32489501的博客 478

R语言WGCNA实战:从基因表达矩阵到模块可视化全流程(附避坑指南)

本文详细介绍了使用R语言进行WGCNA(加权基因共表达网络分析)的完整实战流程,涵盖从基因表达矩阵预处理、软阈值选择、网络构建与模块识别,到模块与表型关联分析及结果可视化的关键步骤。文章重点解析了代码实现,并提供了针对数据质量检查、参数调整等常见问题的避坑指南,帮助生物信息学研究者高效挖掘基因共表达模块的生物学意义。

weixin_29062823的博客 580

火山引擎实时对话AI实战:5分钟搞定WebRTC+大模型+ASR/TTS全链路集成

本文详细介绍了如何利用火山引擎的实时对话AI解决方案,快速集成WebRTC、大模型、ASR和TTS服务,构建低延迟、高保真的实时语音对话应用。通过实战代码示例,从环境准备、音频流管理到全链路串联与性能优化,为开发者提供了一套端到端的集成指南,适用于智能客服、在线教育等互动场景。

weixin_29051245的博客 1129

Oracle面向对象编程OOP

自Oracle9i以来,Oracle就不再是单纯的关系数据库管理系统,它在关系数据库模型的基础上,添加了一系列面向对象的特性。Oracle9i就号称面向对象数据库。Oracle的对象体系遵从面向对象思想的基本特征,许多概念同C++,JAVA中类似,具有继承,重载,多态等特征,但又有自己的特点。      下面详细介绍下Oracle面向对象编程。 1   面向对象类型TYPE 1.1   面向

pursuer211的专栏 3588

Weblogic安装与部署

27.免密登录,在目录Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\AdminServer和Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\Server-TA目录下,新建security\boot.properties文件,13.点击新建按钮,填写服务器名称,服务器监听地址,再点击下一步,最后点击完成。

m0_46259466的博客 6635

PL/SQL语言的面向对象编程

在当前的数据库应用开发中,PL/SQL作为Oracle数据库的主要编程语言,广泛应用于存储过程、触发器、函数及包的编写。PL/SQL不仅支持传统的过程式编程,还支持面向对象编程(OOP)特性,使得开发者能够以更加模块化和可重用的方式设计程序。尤其在复杂的应用程序中,OOP理念能够显著提高代码的可维护性,使得整个系统的设计更加清晰。本文将深入探讨PL/SQL中的面向对象编程,包括其概念、特性、具体实现及其在实际应用中的优势。

2501_90199801的博客 452

深入解析TMC2209 UART寄存器配置:从基础指令到高级参数调优

本文深入解析TMC2209 UART寄存器配置,从基础指令到高级参数调优,涵盖电流控制、微步细分等关键设置。通过实战案例和优化技巧,帮助开发者高效配置步进电机驱动,提升系统性能和稳定性。特别介绍了UART通信协议和CRC校验实现,确保数据传输可靠性。

tequila的博客 1159

构建.NET网站:VSCode还是Visual Studio?揭开开发工具的选择之谜

选择VSCode还是Visual Studio,归根结底是取决于你的具体需求和偏好。🔍 这两款工具各有千秋,都能为你的.NET网站开发提供强大的支持。希望这篇文章能够帮助你更全面地了解这两款工具,做出明智的选择。

墨夶的博客 788

java开发工程师需要学什么_青岛莱牛教育:浅谈Java软件开发工程师的知识架构...

步入社会多年,很多人也多多少少知道互联网行业高薪,加班强度相对较高,很多人也会因为各类原因而选择进入互联网行业去进行发展。今天就来聊聊互联网比较多的Java初级软件开发工程师所需的一些知识架构。Java含义: Java是一种计算机的编程语言,吸收了C的很多优点,同时Java语言也是功能强大并且简易的计算机语言,Java是一种面向对象的编程语言。 这里只谈谈当初自己学Java时所学习的一些知识。J...

weixin_39983993的博客 387

基于Matlab的轨迹分析行为识别

本文将介绍基于Matlab的轨迹分析行为识别方法,并提供相应的源代码。在轨迹特征提取完成后,我们需要通过对于某一时间窗口内的轨迹特征进行聚合和分析,得到相应的行为特征。轨迹分析作为一种简单有效的行为识别方法,在实际应用中得到了广泛的应用。本文介绍了一种基于Matlab的轨迹分析行为识别方法,并提供相应的源代码作为参考。轨迹分析是指对于一定时间内某个对象在空间中运动的路径进行跟踪和分析的方法。在行为识别中,我们可以通过对于轨迹进行特征提取和分析,进而得到该对象的运动模式和行为特征。二、轨迹分析行为识别流程。

DevProPlus的博客 885

404boom 博客闪现【不断的优化更新中。。。】

404boom 博客闪现[不断的优化更新中。。。] 一:Java SE相关1、Java的概述2、Java基础语法3、main函数的特别之处4、Java面向对象(一)5、Java面向对象(二)6、Java面向对象(三)7、Java数组8、Java SE 核心 I9、Java SE 核心 II【Collection 集合框架】10、迭代器遍历【List、Set、Map】11、用容器存储表格数据12、...

weixin_30905133的博客 187

Android PMS——概述(一)

PMS(Package Manager Service)是 Android 操作系统的一个重要组件,它负责管理应用程序的包信息以及与应用程序的安装、卸载、权限控制等相关功能,确保应用程序的安全性和稳定性。 Android PMS 负责维护一个应用程序包的清单信息,该清单是一个 XML 文件,包含应用程序的各种元数据,例如应用程序的包名、版本号、权限要求、组件信息等。PMS通过访问该清单文件来获取应用程序的信息。 此外,Android PMS 还负责应用程序的安装和卸载。在安装应用

小旭的专栏 1668

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java视频教程整理(部分)

Java视频教程《跟我学Java26日通》第一篇:Oracle数据库入门(Java教程)第1天 Oracle基本命令与简单查 第1节 Oracle安装及基本使用...............30分钟 第2节 SQLPlusw操作.......................18分钟 第3节 常用表介绍.........................11分钟 第4节 简单SQ...

weixin_34186128的博客 110

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java进阶之路

java学习之路 Java学习之路:不走弯路_就是捷径 :http://download.youkuaiyun.com/detail/aabbc59/6845225 第一阶段 技术名称 技术内容 J2SE (java基础部分) java开发前奏 计算机基本原理,Java语言发展简

hblis1991的专栏 540

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

基于Oracle的面向对象技术基础简析

一、概述   对象是Oracle8i以上版本中的一个新的特性,对象实际是对一组数据和操作的封装,对象的抽象就是类。在面向对象技术中,对象涉及到以下几个重要的特性:    封装性   通过对数据和操作的封装,将用户关心的数据和操作暴露出来作为接口,其他数据和操作则隐藏到对象内部,这样便于用户使用和维护。    继承性   对象具有继承性,通过这一特性可以增强程序的可扩展

mniwc的专栏 636

Oracle01-入门

Oracle是非常重要的关系型数据库

李宥的博客 1947

JAVA入门教程-基础篇

Java 由 Sun Microsystems 公司于 1995 年发布,后来被 Oracle 公司收购。Java 的设计目标是“一次编写,到处运行”(Write Once, Run Anywhere, WORA),这意味着 Java 程序可以在任何支持 Java 虚拟机(JVM)的平台上运行,而不需要重新编译。本文介绍了 Java 的基础知识,包括 Java 的特点、开发环境搭建、第一个 Java 程序、基础语法以及面向对象编程的基本概念。

codecrash的博客 2289

基于oracle的面向对象技术基础简析

 一、概述  对象是oracle8i以上版本中的一个新的特性,对象实际是对一组数据和操作的封装,对象的抽象就是类。在面向对象技术中,对象涉及到以下几个重要的特性:   封装性  通过对数据和操作的封装,将用户关心的数据和操作暴露出来作为接口,其他数据和操作则隐藏到对象内部,这样便于用户使用和维护。   继承性  对象具有继承性,通过这一特性可以增强程序的可扩展性,适合大型项目的开发。   多态性 

Gavin.Young 653

oracle入门(新手必看)

本章内容: Ø Oracle介绍 Ø 安装步骤 Ø 基本使用 Ø 用户管理 一、Oracle数据库简介 Oracle数据库是Oracle(甲骨文)公司的核心产品,适合于大型项目的开发;银行、电信、电商、金融等各领域都大量使用Oracle数据库。 Oracle数据库是一种对象关系型数据库,在关系型数据库的基础上,引入了一些面向对象的特性。 Oracle数据库的产品可以免费下载,其服务是收费的,也就是该数据库用于商业目的时,必须取得Oracle的授权。 Oracle出现有30年时间,经历了很多版本,目前最新的版

LiuYang_ 2481

Java入门基础

在学习Java的语法其本质就是学习这些关键字的含义,一共有50多个关键字,并且关键字不能当类名,也就是新建Java的文件名使用。5. 编写简单的Java程序:通过编写一些简单的Java程序来巩固所学的知识,如打印Hello World、计算两个数的和等。8. 阅读文档和学习资源:Java有很多优秀的学习资源和文档,可以通过阅读官方文档、教程和书籍来深入学习Java的各个方面。4. 理解Java的类库:Java有丰富的类库,学习如何使用这些类库来完成各种任务,如输入输出、字符串处理、文件操作等。

2402_83503720的博客 1778

【Oracle教程二】—— 基础入门

简介 SQL Server数据库与Oracle数据库之间最大的区别要属表空间设计。ORACLE数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构。一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。 常用命令 登陆:sqlplus scott/root 退出:quit; 或 exit; 设置控制台长度:set linesize 300

qq_41196691的博客 694

Oracle最全基础入门笔记(简单清晰,没有之一)

一、常见的数据库: mysql   sqlServer  oracle  db2  sybase 今天我要分享的是 oracle数据库 二、Oracle的一个认知: oracle是一家公司的名字(甲骨文公司),世界上屈指可数的,是国际上非常大的巨型IT公司,是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越IBM,成为继Microso...

javaboy_yl 2730
上一篇: ORACLE优化系列文章三 ──优化Oracle数据库性能
下一篇: 查看sqlplus所有命令的方式
zonelive
博客等级 码龄23年 4粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值