PL-SQL-面向对象

  • 时间:
  • 浏览:45
  • 来源:it300
在本章中,我们将讨论面向对象的PL/SQL。PL/SQL允许定义对象类型,这有助于在Oracle中设计面向对象的数据库。对象类型允许您创建复合类型。使用对象允许您实现具有特定数据结构和操作方法的真实世界对象。对象具有属性和方法。属性是对象的属性,用于存储对象的状态;方法用于建模对象的行为。

对象是使用CREATE[OR REPLACE]TYPE语句创建的。以下是一个示例,用于创建一个简单的address对象,该对象由几个属性组成.

CREATE OR REPLACE TYPE address AS OBJECT(house_no varchar2(10)、“街道varchar2(30)”、“城市varchar2(20)”、“状态varchar2(10)、“pincode varchar2(10)”;/

当上述代码在SQL prom上执行时pt,它产生以下结果

Typecreate。让我们再创建一个对象customer,其中,我们将属性方法包装在一起,以具有面向对象的感觉

CREATE OR REPLACE TYPE customer AS OBJECT(代码号(5)、“名称varchar2(30)、“._no varchar2(12)、“addr address”、“成员过程显示”;/

当在SQL提示符下执行上面的代码时,它产生以下结果

Type..

Instantiating an Object

定义对象类型为对象提供蓝图。要使用这个对象,您需要创建这个对象的实例。可以使用实例名和访问操作符(.)如下访问对象的属性和方法

DECLARE.ence address;BEGIN.ence: =address('103A','M.G..','Jaipur','Rajasthan','201301');;dbms_output.put_line('House No: '|.ence.house_no);;dbm dbms_output.put_line('Street: '||.ence..);dbms_output.put_line('City: '|.ence.city);dbms_output.put_line('State: '|.ence.state);dbms_output.put_line('Pincode: '|.ence.pincode);END; /

当在SQL提示符处执行上述代码时,它产生以下结果第103A街: M.G.路市:斋浦尔州: Rajasthan Pincode: 201301 PL/SQL程序成功完成。成员方法

成员方法

成员方法用于操纵对象的属性。在声明对象类型时,提供成员方法的声明。对象主体定义成员方法的代码。对象体是使用CREATE TYPE BODY语句创建的。

Constructors是返回新对象作为其值的函数。每个对象都有一个系统定义的构造函数方法。构造函数的名称与对象类型相同。例如

.ence: =address('103A','M.G..','Jaipur','Rajasthan','201301'); 

比较方法用于比较对象。比较对象

Map方法

Map方法Map方法是以其值取决于属性值的方式实现的函数。例如,对于客户对象,如果两个客户的客户代码相同,则两个客户可以相同。因此,这两个对象之间的关系取决于代码的值。

Order方法

Order方法Order方法实现了一些比较两个对象的内部逻辑。例如,对于矩形对象,如果其两边都较大,则矩形比另一个矩形大。

使用Map方法

让我们尝试使用以下矩形对象

CREATE OR REPLACE TYPE矩形作为对象(长度号、宽度号、成员数)来理解上述概念函数放大(inc number)返回矩形、成员过程显示、映射成员函数度量返回数;/

当在SQL提示符下执行上述代码时,它产生以下结果

Type create.

创建类型体

CREA作为成员函数放大(inc number)返回矩形是“开始”返回矩形(self.. inc,self.. inc);“结束”放大;“成员进程显示”是“开始”dbms_output.put_line(“长度:”|长度);“dbms_output.put_line(“宽度:”||宽度”;“结束”显示;“映射成员”当上述代码在SQL提示符下执行时,它产生以下结果

类型体。r2矩形;r3矩形;inc_因子编号:=5;BEGIN r1:=r1:=矩形(3,4);r2:=矩形(3,4);r2:=矩形(5,7);r3:=r2:=矩形(5,7);r3:=r1:=r1.enenen(inc_因子);r3.显示;r3.r3.显示;IF(r1>r1>r2)THEN——调用测量函数r1.显示器;r3.显示;IF(r1(r1>r1>r1>r1>r2)THEN--调用测量函数r1.显示;r3.显示;r3.显示(r3.IF(r3.IF(r1显示;END IF;END;/

当以上代码在SQL提示符下执行,它产生以下结果

Length:8 Width:9 Length:5 Width:7 PL/SQL过程成功完成。使用Order方法

现在,使用order方法可以获得相同的效果。让我们使用order方法

CREATE OR REPLACE TYPE TYPE rect.AS OBJECT(长度号、宽度号、成员过程显示、order成员函数.(r矩形)返回号)重新创建矩形对象;/

当在SQL提示符处执行上述代码时,它生成以下代码结果.

>pre class>>类型创建。

>创建类型主体.<>>创建类型主体.8722;<预类型.<<预打印not翻译板>>预类型或替换类型主体矩形>CREATE或替换类型主体矩形>CREATE或替换类型主体矩形作为MEMBER PROCEDURE显示IS BEGIN dbms_dbms_output_output.put线('长度:“|||||||||长度);dbms_output_output_output_put_put_行('长度:“||||||||||||长度|长度:|长度|长度”);.|dbms_output_output_订单成员函数度量(r矩形)返回数IS BEGIN IF(sqrt(self..*self.. self..*self..)> sqrt(r..*r.. r..*r..))然后返回(1);ELSE.(-1);END IF;END度量;END;/

当在SQL提示符处执行上述代码时,它生成以下代码结果.

创建类型体>>创建类型体。

使用矩形对象及其成员函数.<<

>使用矩形对象及其成员函数.<

>pre矩形=“预打印翻译板”>pre pre class=“预打印翻译板”r1矩形;r2矩形;r2 r2矩形;BEGIN r1:=矩形(23,44);r2:=矩形(15,15,17);r2:=矩形(15,17);r1.显示;r1.r1.r1.r1.r1.r1.显示;r1.r1.r1.r1.r1.r1.r1.r1.r1.r-调用度量有趣ction r1.display;ELSE r2.display;END IF;END;/

当上述代码在SQL提示符下执行时,它产生以下结果

Length:23 Width:44 Ledth:17 Width:44 PL/SQL过程成功完成。

PL/SQL对象的继承h2>

PL/SQL允许从现有的基本对象创建对象。为了实现继承,应该将基本对象声明为NOTNFINAL。默认值为FINAL.

以下程序说明了PL/SQL对象中的继承。让我们创建另一个名为TableTop的对象,这是从矩形对象继承的。为此,我们需要创建基本矩形对象

CREATE OR REPLACE TYPE TYPE矩形作为对象(长度号、宽度号、成员函数放大(inc号)返回矩形、NOT FINAL成员过程显示)NOT FINAL/

,当在SQL提示符处执行以上代码时,它支持创建或替换类型矩形。导出以下结果

Type..

创建基类型体

创建或替换类型体矩形作为成员函数放大(inc number)返回矩形是BEGIN返回矩形(self.. inc,self.. inc);END放大;MEMBER PROCEDURE显示是BEGIN dbms_output.put_line('Length: '|.); dbms_output.put_line('Width: '|.); END显示;END; /

当在SQL提示符处执行上述代码时,它产生以下结果

Type body。

>创建子对象表。top

CREATE OR REPLACE TYPE桌面,下面是矩形(“.varchar2(20),“OVERRIDING member过程显示”)/

>当在SQL提示符处执行上述代码时,它产生以下结果

Type create.
>p>创建类型主体。对于子对象tabletop>tabletop>p>>>pre class="预打印not翻译板">>创建或替换类型体台式桌面作为越过所有成员,显示IS BEGIN数据库数据库dbms_output_output.put_line('长度:“||||||长度);>dbms_output_output.put_put_line('宽度:“||||||||||宽度);;>dbms_output_output_output_put_put_line('dbms_put_put_put_put_put_put_put_put_line('材料:““““||||||||||||||||||宽度||||||||||宽度|宽度||||上面的代码是在SQL提示符下执行,它产生以下结果

类型体创建。

p>使用桌面对象及其成员函数

>pre class=<桌面>>桌面>

Length:20Width:10Material:WoodLeodLength:50Width:30Material:.PL/SQL过程成功完成。PL/SQL

猜你喜欢

希腊最高法院批准俄罗斯对比特币嫌疑人的请求

希腊最高法院批准俄罗斯对比特币嫌疑人的请求希腊最高法院上周五表示,一名据称使用比特币数字货币洗钱40亿美元的俄罗斯人应该被引渡到俄罗斯,一位法院消息人士说。AlexanderV

2019-02-01

塑造美国网络防御的创造性破坏和自满情绪

塑造美国网络防御的创造性破坏和自满情绪创造性的破坏,思维的范式转换取代现有的秩序,可能是一个难以捉摸的概念,但它作为人类行为驱动力的力量是不可否认的。在硅谷和其他美国的高层科技

2019-02-01

为什么我(非常)担心PRISM

为什么我(非常)担心PRISM美国国家安全局正在利用我们的数字生活,监控语音电话,电子邮件,社交媒体以及谁知道什么。美国国家安全局方面的人说,这是为了国家安全;它已经停止了恐怖

2019-02-01

先发优势:为什么新的恶意软件最初会打败反恐

先发优势:为什么新的恶意软件最初会打败反恐虽然反病毒解决方案可以有效对抗广泛使用的恶意软件,但是有一个很好的机会,新的恶意软件会躲过那些解决方案。最近有重大安全事件的报告激增,

2019-02-01

台湾银行抢劫与朝鲜黑客有关

台湾银行抢劫与朝鲜黑客有关最近针对台湾一家银行的网络抢劫事件已被安全研究人员联系到一个据信在朝鲜境外活动的臭名昭着的威胁组织。黑客利用SWIFT全球金融网络大致窃取来自台湾远东

2019-02-01