/**
集合:联合数组、嵌套表、可变数组
属性:count、first、last、limit、exists、prior、next
方法:delete、extend、trim(extend trim不可用于联合数组)
**/
declare
type lh_name is table of varchar2(10) index by binary_integer;--联合数组
type qt_age is table of number(5);--嵌套表
type kb_num is varray(20) of varchar2(20);--[not null] 可变数组(varying array)
v_name lh_name;
v_age qt_age:=qt_age('12','23','43','21','32','12','144','152','162','14','13','11','17','22','42','62','12','17','22','42','62','12');
v_num kb_num:=kb_num('1','2','3','4','5');
v_count number(10);
begin
/**
v_age.extend;--尾端加一个null
v_age.extend(2);--尾端加2个null
v_age.extend(2,7);--尾端加2个7
v_num.trim;--尾端删一个元素
v_num.trim(2);--尾端删2个元素
**/
dbms_output.put_line('v_name属性count:'||v_name.count||'v_age属性count:'||v_age.count||'v_num属性count:'||v_num.count);
-- Test statements here
--v_age.delete;--删除全部
v_age.delete(1);--删除位置为1的元素
v_age.delete(10,11);--删除位置在10到11的元素
if v_name.exists(1) then
dbms_output.put_line('v_name(1)的值:'||v_name(1));
else
v_name(1):='iris';
dbms_output.put_line('v_name最大元素个数:'|| v_name.limit);--注意:嵌套表没有最大元素个数只能返回null
end if;
dbms_output.put_line('v_num最大元素个数:'|| v_num.limit);--返回20,定义时的最大元素个数
v_count:=v_num.first;
while v_count<=v_num.last loop
dbms_output.put_line('当前元素:'|| v_num(v_count));
v_count:=v_num.next(v_count);--当前元素下一位元素
end loop;
v_count:=v_num.last;
while v_count>=v_num.first loop
dbms_output.put_line('当前元素:'|| v_num(v_count));
v_count:=v_num.prior(v_count);--当前元素上一位元素
end loop;
end;