plsql中有3中集合類型。分別是可變長數組,嵌套表,關聯表(索引表)。 sql
簡單的說下它們之間的區別。 數據庫
1.type t_num is varray(100) of number(5); v_num t_num := t_num(1,2,3,4); 2.type t_num is table of number(5); v_num t_num := t_num(); 3.type t_num is table of number index by binary_integer;v_num t_num; --無需初始化。
可變長數組和嵌套表在使用以前,請必定要用構造函數進行初始化。才能用,,不然會出錯。而關聯表就不用。若是不打算在任何地方使用它,,那麼不初始化也能夠。。但這樣的變量在實際的程序當中通常是不會出現的。 數組
往可變長數組和嵌套表添加元素是,必須調用extend方法,不然不能進行元素的添加,,而關聯表就不用,直接能夠添加元素。 函數
另外,能夠使用bulk collect into 對可變長數組和嵌套表進行批量綁定。綁定前無需extend。 spa
可變長數組和嵌套表的下標都是從1開始(有序的),,而關聯表的下標沒有這個規定,應爲是無序的,因此能夠是不連續的下標,,還能夠是以字符串爲下標。 code
可變長數組和嵌套表能夠做爲數據庫表字段,存儲到數據庫中。而關聯表就不行,,那只是用來存放臨時數據。 索引
例如
先建立一個可變長數組類型,把他做爲數據庫表字段類型。 字符串
create type t_num is varray(10) of number(5);--建立以後,可在數據字典user_types裏找到這個類型的有關信息。 table
create table cbm_friendlist (name varchar2(10), xx t_num); --建立表。 class
一樣的道理,按照上面的方法,也可把嵌套表做爲表字段。