代碼段如下
復制代碼 代碼如下:
declare
type t_indexby is table of number
index by binary_integer;
type t_nesteed is table of number;
type t_varray is varray(
v_indexby t_indexby;
v_nested t_nested;
v_varray t_varray;
begin
v_indexby(
v_indexby(
v_nested:=t_nested(
v_varray:=t_varray(
end;
一段很簡單的有關Oracle裡數組的sample代碼
這段代碼也還不錯
這段代碼
這裡是Oracle文檔裡對這三種數組類型的介紹
An index
A nested table is appropriate for large collections that an application stores and retrieves in portions
A VARRAY is appropriate for small collections that the application stores and retrieves in their entirety
這裡是對通過應用性上的對他們三者的概括
sample code中以對三種不同的type定義的方式開始
type t_indexby is table of number index by binary_integer;
type t_nesteed is table of number;
type t_varray is varray(
上兩句和後一句有明顯的不同
上面sample的後部分就描述了兩者的區別
我們通過sample來看看
v_indexby(
v_indexby(
這裡分別在v_indexby裡加了兩個元素
這裡
v_nested:=t_nested(
v_varray:=t_varray(
這裡分別是定義了
v_nested:=t_nested(
v_varray:=t_varray(
強調一下
v_nested
大家在這裡基本上已經可以看到他們的區別了
上面的例子裡
復制代碼 代碼如下:
declare
type t_array is table of varchar
v_array t_array;
v_idx number;
begin
v_array(
v_array(
v_array(
v_idx := v_array
loop
exit when v_idx is null;
dbms_output
v_idx := v_array
end loop;
end;
/
結果
a
a
a
注意這裡的方法
對於nested table來說
復制代碼 代碼如下:
declare
type t_array is table of varchar
v_array t_array;
v_idx varchar
begin
v_array := t_array();
v_array
v_array(
v_array
v_array(
v_array
v_array(
v_idx := v_array
loop
dbms_output
exit when v_idx is null;
dbms_output
v_idx := v_array
end loop;
end;
/
看看nested tabled的訪問也可以和上面一樣
復制代碼 代碼如下:
for i in unt loop
dbms_output
dbms_output
end loop;
其實可以看到和java裡的list的訪問很類似了
這個知識點
Oracle對Index by 數組的官方介紹
From:http://tw.wingwit.com/Article/program/Oracle/201404/30541.html