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...