亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

基于Oracle的面向對象技術基礎簡析

2024-08-29 13:46:28
字體:
來源:轉載
供稿:網友
一、概述

  對象是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的這一特性,可以將面向對象的重用性,可擴展性等優點引入到數據庫中,提高了數據庫的運行性能。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品aaa| 亚洲电影免费观看高清完整版在线| 欧美中在线观看| 最近2019中文字幕第三页视频| 国产精品一区二区电影| 91老司机在线| 最近的2019中文字幕免费一页| 久久亚洲综合国产精品99麻豆精品福利| xvideos亚洲| 成人黄色短视频在线观看| 欧美老妇交乱视频| 91精品免费视频| 精品久久香蕉国产线看观看gif| 欧美电影免费观看大全| 欧美野外wwwxxx| 欧美疯狂xxxx大交乱88av| 亚洲美女av在线| 亚洲国产黄色片| 欧美激情一级精品国产| 亚洲综合中文字幕在线| 国产精品欧美风情| 日韩美女在线观看一区| 色婷婷久久一区二区| 国产精品香蕉av| 欧美成人精品xxx| 欧洲成人在线视频| 欧美猛男性生活免费| 欧美xxxx做受欧美| 亚洲国产天堂久久国产91| 亚洲人成网站777色婷婷| 亚洲精美色品网站| 国产精品国产自产拍高清av水多| 亚洲在线免费观看| 狠狠躁18三区二区一区| 亚洲嫩模很污视频| 亚洲第一福利在线观看| 国产97色在线|日韩| 久久免费视频网站| 国产精品香蕉国产| 欧美裸体xxxx| 国产精品一区电影| 国产v综合v亚洲欧美久久| 亚洲国产一区自拍| 欧美国产日本高清在线| 欧美成年人网站| 久久精品电影网站| 精品国产自在精品国产浪潮| 91国产美女在线观看| 欧美日韩在线另类| 色综合色综合久久综合频道88| 国产在线视频2019最新视频| 欧美精品18videos性欧| 国产精品久久久久久久久久久新郎| 韩国国内大量揄拍精品视频| 久久夜色精品国产亚洲aⅴ| 欧美成人激情视频免费观看| 欧美日韩在线视频一区| 亚洲综合中文字幕在线观看| 欧美视频免费在线观看| 久久久久久久久久久人体| 日本精品久久中文字幕佐佐木| 夜夜嗨av色综合久久久综合网| 国产成人在线播放| 亚洲男人7777| 91在线高清免费观看| 欧美与欧洲交xxxx免费观看| 91精品久久久久久久久久另类| 国产日韩精品电影| 一区二区三区天堂av| 国产成人福利夜色影视| 亚洲电影免费观看高清完整版| 欧美激情一级精品国产| 91精品视频免费看| 国产99久久久欧美黑人| 最新中文字幕亚洲| 亚洲精品久久久久中文字幕欢迎你| 久久久久久一区二区三区| 亚洲国产精品视频在线观看| 97人人做人人爱| 国产精品99蜜臀久久不卡二区| 国产精品成人aaaaa网站| 日日噜噜噜夜夜爽亚洲精品| 九九久久久久久久久激情| 亚洲午夜女主播在线直播| 久久亚洲春色中文字幕| 78m国产成人精品视频| 日韩高清免费观看| 久久91亚洲人成电影网站| 91夜夜未满十八勿入爽爽影院| 成人精品福利视频| 亚洲人成电影网站色| 一个色综合导航| 在线中文字幕日韩| 亚洲a区在线视频| 亚洲一区www| 九九热这里只有精品免费看| 亚洲精品一区av在线播放| 最新69国产成人精品视频免费| 成人有码在线视频| 日韩经典中文字幕在线观看| 久久高清视频免费| 久久精品最新地址| 97视频在线观看免费| 国产丝袜精品第一页| 亚洲综合在线做性| 91国内在线视频| 午夜美女久久久久爽久久| 在线观看国产欧美| 欧美裸体xxxx| 国产国语刺激对白av不卡| 亚洲精品视频网上网址在线观看| 亚洲欧美中文字幕在线一区| 亚洲日本aⅴ片在线观看香蕉| 国产综合久久久久久| 亚洲精品久久久久久久久| 亚洲国产成人av在线| 狠狠躁夜夜躁人人爽天天天天97| 欧美日韩精品二区| 日韩视频―中文字幕| 全亚洲最色的网站在线观看| 日韩欧美中文字幕在线播放| 亚洲自拍偷拍区| 国产精品国产亚洲伊人久久| 一级做a爰片久久毛片美女图片| 亚洲精品色婷婷福利天堂| 久久香蕉精品香蕉| 欧美另类第一页| 精品一区二区三区四区| 日产精品99久久久久久| 国产伦精品一区二区三区精品视频| 欧美国产亚洲精品久久久8v| 久久男人的天堂| 国产精品美女免费| 成人天堂噜噜噜| 日韩免费电影在线观看| 欧美激情亚洲综合一区| 亚洲电影免费观看高清| 成人在线免费观看视视频| 欧美日韩在线视频一区| 色婷婷av一区二区三区久久| 国产精国产精品| 久久久精品欧美| 亚洲美女久久久| 精品一区二区三区四区| 亚洲欧美日韩天堂一区二区| 欧美国产日本高清在线| 国产精品视频中文字幕91| 亚洲自拍偷拍区| 亚洲男人天堂手机在线| 成人在线视频福利| 久久精品这里热有精品| 91久热免费在线视频| 国产精品com| 日韩精品视频在线观看免费| 日韩成人在线视频观看| 欧洲成人免费视频| 在线视频中文亚洲| 精品美女久久久久久免费| 国产亚洲欧洲黄色| 欧美性生交大片免费| 成人精品久久一区二区三区| 日韩免费av片在线观看| 国产日韩精品电影| 亚洲欧美中文日韩在线|