《一維陣列
set serverout on size 100000
declare
type t_varray is varray(3) of varchar2(20);
v_var t_varray := t_varray('i', 'love', 'study');
begin
for i in 1 .. v_var.count loop
dbms_output.put_line(v_var(i));
end loop;
end;
/《二維陣列
《二維陣列example1
declare
type t_varray is varray(5) of number;
type t_varray_varray is varray(2) of t_varray;
v_var t_varray_varray := t_varray_varray(t_varray(11, 12, 13, 14, 15),
t_varray(21, 22, 23, 24, 25));
begin
for i in 1 .. v_var.count loop
for j in 1 .. v_var(i).count loop
dbms_output.put_line(v_var(i) (j));
end loop;
end loop;
end;
/《二維陣列example2
declare
type t_num is table of number index by binary_integer;
type t_var is table of number index by varchar2(10);
type t_num_var is table of t_num index by varchar2(10);
type t_var_num is table of t_var index by binary_integer;
v_num_var t_num_var;
v_var_num t_var_num;
begin
v_num_var('a')(5) := 1;
v_var_num(5)('a') := 1;
end;
/《可變陣列
--巢狀表
type tbl_t is table of varchar2(30);
my_tbl tbl_t := tbl_t('a', 'b', 'c'); --初始化
oracle除了陣列型別varray之外,還有巢狀表和索引表也都可以實現類似陣列的功能。
使用索引表定義陣列,不需要指定陣列的上限,陣列的大小只與記憶體限制有關。
《可變陣列example1
declare
type t_tab is table of number index by varchar2(30);
--索引是陣列的下標
v_var t_tab;
v_str varchar2(30);
begin
for i in (select owner, count(1) cn from dba_tables group by owner) loop
v_var(i.owner) := i.cn;
--索引是陣列的下標
end loop;
v_str := v_var.first;
while (v_var.exists(v_str)) loop
dbms_output.put_line(rpad(v_str, 20, '-') || ':' || v_var(v_str));
v_str := v_var.next(v_str);
end loop;
end;
/ctxsys--------------:36
dev-----------------:1915
hr------------------:7
mars3_web_usr-------:9
《可變陣列example2
declare
type t_rec is record(
vint integer,
vchr varchar2(100));
type t_tab is table of t_rec index by binary_integer;
--t_rec 等價 emp%rowtype
v_var t_tab;
y integer := 1;
begin
for x in 1 .. 3 loop
v_var(x).vint := x;
v_var(x).vchr := to_char(v_var(x).vint, '$09.00');
end loop;
while (v_var.exists(y)) loop
dbms_output.put_line(v_var(y).vint || '/' || v_var(y).vchr);
y := y + 1;
end loop;
end;
/1/ $01.00
2/ $02.00
3/ $03.00
《可變陣列example3
declare
type t_tab is table of varchar2(20) index by binary_integer;
v_var t_tab;
begin
v_var(1) := '北京';
v_var(2) := '上海';
v_var(3) := '廣州';
dbms_output.put_line('共有記錄:' || v_var.count);
dbms_output.put_line('第一條:' || v_var.first);
dbms_output.put_line('最後一條:' || v_var.last);
dbms_output.put_line('第二條的前一條:' || v_var.prior(2));
dbms_output.put_line('第二條的後一條:' || v_var.next(2));
--count,first,last,next,prior方法返回的值是整數
--以下3種表示的內容相同:
dbms_output.put_line('第一條記錄內容:' || v_var(v_var.prior(2)));
dbms_output.put_line('第一條記錄內容:' || v_var(v_var.first));
dbms_output.put_line('第一條記錄內容:' || v_var(1));
end;
/共有記錄:3
第一條:1
最後一條:3
第二條的前一條:1
第二條的後一條:3
第一條記錄內容:北京
第一條記錄內容:北京
第一條記錄內容:北京
《可變陣列example4
declare
type t_tab is table of varchar2(20);
v_var t_tab := t_tab('北京', '上海', '廣州');
--ora-06531: reference to uninitialized collection
--如果沒有 index by binary_integer ,則需 初始化
begin
v_var(1) := '$北京';
v_var(2) := '$上海';
v_var(3) := '$廣州';
dbms_output.put_line('共有記錄:' || v_var.count);
dbms_output.put_line('第一條:' || v_var.first);
dbms_output.put_line('最後一條:' || v_var.last);
dbms_output.put_line('第二條的前一條:' || v_var.prior(2));
dbms_output.put_line('第二條的後一條:' || v_var.next(2));
--count,first,last,next,prior方法返回的值是整數
--以下3種表示的內容相同:
dbms_output.put_line('第一條記錄內容:' || v_var(v_var.prior(2)));
dbms_output.put_line('第一條記錄內容:' || v_var(v_var.first));
dbms_output.put_line('第一條記錄內容:' || v_var(1));
end;
/共有記錄:3
第一條:1
最後一條:3
第二條的前一條:1
第二條的後一條:3
第一條記錄內容:$北京
第一條記錄內容:$北京
第一條記錄內容:$北京
oracle陣列使用例項
一維陣列 set serverout on size 100000 declare type t varray is varray 3 of varchar2 20 v var t varray t varray i love study begin for i in 1 v var.count l...
使用json傳輸陣列例項
client.php 遍歷陣列元素,並將元素轉碼 function array iconv data,in charset gbk out charset utf 8 elseif count data count data,1 else return output arr array userna...
使用json傳輸陣列例項
client.php 遍歷陣列元素,並將元素轉碼 function array iconv data,in charset gbk out charset utf 8 elseif count data count data,1 else return output arr array userna...