Home >Database >Mysql Tutorial >Oracle面向对象编程OOP

Oracle面向对象编程OOP

WBOY
WBOYOriginal
2016-06-07 17:34:20833browse

自Oracle9i以来,Oracle就不再是单纯的关系数据库管理系统,它在关系数据库模型的基础上,添加了一系列面向对象的特性。Oracle9i

Oracle面向对象编程OOP

[日期:2014-01-05] 来源:Linux社区  作者:pursuer211 [字体:]

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

为什么要引入对象模型?部件可重用和简化复杂的应用程序。

下面详细介绍下Oracle面向对象编程。

1  面向对象类型TYPE

在PL/SQL语言中,面向对象的程序设计是基于对象类型。

1.1  面向对象类型定义语法

对象类型的定义包括对象类型头(或称为对象规范,specification)和对象类型体(body)。对象类型头包括对象类型的属性、函数和过程的声明,而对象类型体则是对象类型具体的实现,即函数和过程的实现。所以如果对象类型中只有属性,不含函数和过程的话,就只要声明对象类型头就可。

对象类型头声明语法:

      CREATE OR REPLACE TYPE type_name AS OBJECT(
              --属性的声明
              propertyname1    TYPE1,
              propertyname2    TYPE2,
              ...
              properynamen    TYPEn,

              --函数的声明
              member function funcname1(param1 TYPE1, ...) return TYPE11,
              static function funcname2(param1 TYPE2, ...) return TYPE22,
              ...

              --过程的声明
              member procedure  procname1(param1 TYPE1, ...),
              static procedure  procname2(param1 TYPE2, ...),
              ...
      );

对象类型体定义语法:

      CREATE OR REPLACE TYPE BODY type_name  --No 'AS OBJECT'
      AS  --NO 'BEGIN'
          member function funcname1 return TYPE11
          IS
            //变量定义
          BEGIN
            //处理过程
            return var1;
          END funcname1;     
          static function funcname2 return TYPE22
          IS
            //变量定义
          BEGIN
            //处理过程
            return var2;
          END funcname2;
          ...
          member procedure procname1(param1 TYPE1,...)
          IS
            //变量定义
          BEGIN
            //处理过程
          END procname1;
          static procedure procname2(param1 TYPE2,...)
          IS
            //变量定义
          BEGIN
            //处理过程
          END procname2;
          ...
      END;

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn