變長數組:是一個存儲有序元素的集合,每個元素都有一個索引,該索引相對應元素在數組中的位置。變長數組存在大小的限制,但是可以動態進行更改。
創建變長數組語句:
Create Type varray_phone as varray(3) of varchar2(50);
接下來應用這個變長數組,先創建一個人員表,人員表中擁有一列電話,類型是變長數組,意思是這個人,可能有一個電話號碼,也可能有2個,最多3個。
create table person3
(
id integer constraint person3_pk primary key,
first_name varchar(20),
last_name varchar(20),
phone varray_phone
)
create table person3
(
id integer constraint person3_pk primary key,
first_name varchar(20),
last_name varchar(20),
phone varray_phone
)
--填充變長數組
insert into person3 values(1,'yuan','weixiang',varray_phone('12345','34567','56789'));
insert into person3 values(1,'yuan','weixiang',varray_phone('12345','34567','56789'));
SQL> select * from person3;
ID FIRST_NAME LAST_NAME PHONE
---------- -------------------- -------------------- ----------------------------------------------------
1 yuan weixiang VARRAY_PHONE('12345', '34567', '56789')
---------- -------------------- -------------------- ----------------------------------------------------
1 yuan weixiang VARRAY_PHONE('12345', '34567', '56789')
表明該用戶擁有3個電話號碼。
當什麼內容不添加的時候,查詢結果如下:
insert into person3 values(2,'hao','lihai',varray_phone());
SQL> select * from person3;
ID FIRST_NAME LAST_NAME PHONE
---------- -------------------- -------------------- -----------------------------------------------------
1 yuan weixiang VARRAY_PHONE('12345', '34567', '56789')
2 hao lihai VARRAY_PHONE()
---------- -------------------- -------------------- -----------------------------------------------------
1 yuan weixiang VARRAY_PHONE('12345', '34567', '56789')
2 hao lihai VARRAY_PHONE()
修改變長數組中的元素
update person3 set phone= varray_phone('12345','34567') where id = 2;
update person3 set phone= varray_phone('12345','34567') where id = 2;
ID FIRST_NAME LAST_NAME PHONE
---------- -------------------- -------------------- ------------------------------------------------------
1 yuan weixiang VARRAY_PHONE('12345', '34567', '56789')
2 hao lihai VARRAY_PHONE('12345', '34567')
---------- -------------------- -------------------- ------------------------------------------------------
1 yuan weixiang VARRAY_PHONE('12345', '34567', '56789')
2 hao lihai VARRAY_PHONE('12345', '34567')
數據字典
user_varrays表
all_varrays表
user_varrays表
all_varrays表
修改變長數組的元素的長度大小
Alter type varray_phone
modify element type varchar2(60) cascade
cascade選項把更改傳播到數據庫中的依賴對象 Person3就是依賴對象
修改變長數組元素的數目
alter type varray_phone modify limit 5 cascade