- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第23章 Oracle中对象类型 本章目标 掌握对象类型的创建 掌握在集合类型中嵌套对象类型 掌握不同种类的对象类型方法与用法 23.1 对象类型 基本概念 对象类型是面向对象编程的主要组成部分。 对象类型被用于模拟现实世界的具体实体和抽象实体。 对象类型是存储在数据库模式中的。 组成部分 属性(数据) 方法(函数和过程) 可选的 23.1 对象类型 创建语法 CREATE [OR REPLACE] TYPE type_name AS OBJECT (attribute_name1 attribute_type [, …] [method1 specification , …] ) ; CREATE [OR REPLACE] TYPE BODY type_name AS method1 body ; … END ; 23.1 对象类型 说明 当创建对象类型时,对象类型规范是必需的,对象类型体是可选的。 对象类型规范中所定义的属性和方法都是公开的,外部可见的。 对象类型体中定义的方法是私有的,外部不可见的。 【例23-1】创建对象类型 初始化对象 定义某个对象实例,在初始化之前,对象实例及其属性都是NULL。 当引用未初始化对象实例的单个属性时,如果该属性是非数值,或者没有限制精度的数值类型,则会导致错误。 例如: 对象类型的集合 对象类型和集合类型可以相互嵌套。 【例23-2】创建联合数组,其元素为对象类型 【例23-3】创建元素为对象类型的嵌套表类型 23.2 对象类型方法 对象类型方法 在对象类型规范中定义 对对象类型属性进行操作的函数和过程 方法类型 通常由特定方法所执行的动作决定的。 分类 1、构造器方法 2、成员方法 3、静态方法 4、映射和排序方法 1、构造器方法 构造器方法 是系统创建的默认的对象类型方法 名称与对象类型的名称相同 输入参数的名称和数据类型与对象类型的属性相同,并且顺序与对象类型的属性相同 返回对象类型的一个新实例 示例 1、构造器方法 也可以使用名称表示法来调用默认的构造器方法 示例 1、构造器方法 在PL/SQL中,可以创建用户定义的构造器。 用户定义的构造器 可以重载默认的构造器方法 使用默认的参数SELF作为RETURN子句的返回数据类型,返回一个特定的对象类型实例 比默认的构造器更加灵活 【例23-4】添加用户定义构造器方法 2、成员方法 借助于成员方法,可以访问对象实例数据。 【例23-5】添加成员方法 3、静态方法 静态方法 用于不需要访问与特定实例相关数据的动作 为对象实例本身创建的,并描述对象类型的全局性动作 不能访问SELF参数 【例23-6】添加静态方法 4、映射方法 映射方法 将对象实例映射为标量类型数据(DATE、NUMBER或VARCHAR2),然后根据该标量类型数据对对象实例进行排序。 映射方法不接收任何参数。 对象类型中最多只能定义一个映射方法。 【例23-7】添加映射方法 4、映射方法 使用映射方法,比较对象实例 示例 5、排序方法 排序方法 基于排序方法中指定的某些条件,把当前对象实例与相同对象类型的其他对象实例进行比较。 排序方法只能接收一个IN模式的参数,返回INTEGER类型。 返回值为负数:SELF参数所引用的对象实例小于IN参数所引用的对象实例; 返回值为0:SELF参数所引用的对象实例等于IN参数所引用的对象实例; 返回值为正数:SELF参数所引用的对象实例大于IN参数所引用的对象实例; 对象类型中最多只能定义一个排序方法。 对象类型中排序方法与映射方法不能同时定义。 【例23-7】添加排序方法 5、排序方法 使用排序方法,比较对象实例 【方法一】与映射方法的使用一致。 【方法二】将排序方法的结果赋值给INTEGER类型的变量 * * 对象类型规范 对象类型体 -- 创建对象类型 create or replace type obj_emp as object (p_ename varchar2(20), p_job varchar2(20), p_sal number(7, 2) ); -- 使用对象类型 declare v_obj_emp obj_emp; begin select obj_emp(ename, job, sal) into v_obj_emp from emp where empno = 7369; dbms_output.put_line(姓名: || v_obj_emp.p_ename); dbms_output.put_line(职务: || v_obj_emp.p_job
文档评论(0)