自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;