Oracle物件型別 TYPE 之MEMBER

2021-07-26 06:30:38 字數 1850 閱讀 2346

oracle物件型別包括物件型別規範和物件型別體兩部分。物件型別可以更好的體現oracle的資料庫中設計的物件導向的概念。

物件型別有很多固有的方法供我們使用,比如:member、static、map、order,當然可以自定義構造方法。今天我就以member為例,希望起到拋磚引玉的作用。

member方法用於訪問物件例項的資料,如果在物件型別中需要訪問特定物件例項的資料,則必須要定義member方法。注意,member方法只能由物件例項呼叫,而不能由物件型別呼叫。下面我們以示例來說明一下:

首先,建立包含member方法的type和type body,

示例如下:

<1> 建立物件型別規範:

create or replace type person_typ2 as object(

name varchar2(10),gender varchar2(2),

birthdate date,address varchar2(100),

member procedure change_address(new_addr varchar2),

member function get_info return varchar2

);

<2>物件型別體:

create or replace type body person_typ2 is

member procedure change_address(new_addr varchar2)

isbegin

address:=new_addr;

end;

member function get_info return varchar2

isv_info varcahr2(100);

begin

v_info := '姓名:'||name||',出生日期:'||birthdate;

return v_info;

end;

end;

其次、建立表,並插入資料,以便之後更直觀的展示

create table employee_tab2(

eno number(6),person person_typ2,

sal number(6,2),job varchar2(10)

);

--插入一條資料

insert into employee_tab2(eno,sal,job,person)

values(1,2000,'高階軟體工程師',

person_typ2('王明','男','11-1 月 -75','武漢北路55號'));

3、通過物件型別的方法change_address改變人員位址,並呼叫get_info函式,示例如下:

declare

v_person person_typ2;

begin

select person into v_person from employee_tab2

where eno=&&no;

v_person.change_address('江西南昌東街12號'); --改變員工位址

update employee_tab2 set person=v_person where eno=&no;

dbms_output.put_line(v_person.get_info); --獲取員工資訊

end;

/

輸入no的值:1

姓名:王明,出生日期:11-1 月 -75

oracle匯入TYPE物件報錯ORA 02304

type是我們經常使用的資料庫物件結構。我們在實際中,可以單獨定義type型別,之後在pl sql 或者資料表中使用。在乙個偶然的機會讓筆者發現使用type型別在資料exp imp中的麻煩。當我們使用exp imp工具進行同資料庫例項 instance 不同schema之間資料拷貝時,如果schem...

Oracle 自定義資料型別Type

這個月專案中實現了乙個動態彙總並且匯出到excel的功能,媽蛋,為了實現這個功能,乙個網格頁面就用了20 個儲存過程和自定義函式,終於完成了初步測試工作,其中快把我所掌握的不掌握的oracle知識都快用完了,其中有行轉列 xml 列轉行 動態表 動態sql 自定義type 管道函式 資料流函式等,為...

Oracle 自定義資料型別Type

oracle 自定義型別的種類 記錄資料型別 record 和記錄表型別 table 其中記錄資料型別record儲存是一條記錄,記錄表型別table用來儲存多條記錄。如果記錄資料型別record是一維陣列的話,記錄表型別table就是二維陣列。自定義型別有兩種寫法 type is和create t...