面向對象數據庫中存儲的是對象
行為體現為類型的函數或者過程
對象表確實有優勢嗎?
基於抽象類型創建關系表
基於抽象類型創建對象表
抽象類型可以復用
構造函數是默認創造的
如果要插入數據到對象表
一種就是insert into tablename values(字段
另一種就是我們如果想直接用構造函數構造一個大字段直接插入
這時候不需要values
insert into tablename select 構造函數(字段
創建帶方法的類型
首先說方法的定義
沒有返回值
****以後再說
可變數組
聲明一下Oralce的oop中使用下列的對象類型
·抽象數據類型
·可變數組
·嵌套表
·對象表
·對象視圖
可變數組會根據存儲數據的大小來真正存儲數據而不是占用固定的空間
Java中的ArraryList類
關系型理論中不允許一個表中的一個記錄中存儲其他表記錄
而Oracle中是支持的
但是這樣有好處
在用戶查詢的時候比兩個表進行關聯查詢效率高
所以說可變數組也可以做為一條記錄的一個字段被存儲在一個表中
當然這是違反關系數據理論的
創建可變數組的例子
create or replace type mingxitype as object
(
goodsid varchar(
incount int
providerid varchar(
);
/
create or replace type arrmingxitype as varray(
/
create table instock
(
orderid int primary key
indate date
mingxi arrmingxitype
)
/
insert into instock
values(
arrmingxitype(mingxitype(
mingxitype(
mingxitype(
)
)
/
//table函數可以把可變數組轉換為關系表的形式顯示出來
select * from table(select s
GOODSID INCOUNT PROVIDERID
可變數組的元素不能單獨改
所以可變數組適合的場合是
用戶不會修改的數據
刪除數據是通用的
//可變數組的基類型是用戶定義的
create or replace type arrayint as varray(
From:http://tw.wingwit.com/Article/program/Oracle/201311/18046.html