- The COUNT Method: 用于计算 associative array, nested table, or VARRAY 中元素的个数,使用 DELETE or TRIM 将减少 COUNT
/* * COUNT method */ declare type my_varray is varray(3) of varchar2(20); l_varray my_varray := my_varray(); begin l_varray.extend(3); l_varray(1) := 'aaa'; l_varray(2) := 'bbb'; l_varray(3) := 'ccc'; for var_index in 1..l_varray.count loop dbms_output.put_line(l_varray(var_index)); end loop; end;
- The DELETE Method: DELETE 用于删除 collection 中的一个、多个或者全部元素
- The EXISTS Method: 判断 collection 中的指定行是否存在,如果以前存在,后来被 DELETE 了,那也返回 false
/* * DELETE method and EXISTS method */ declare type my_nestedTable is table of varchar2(20); l_nestedTable my_nestedTable := my_nestedTable(); var_temp varchar2(20); index_num number; begin l_nestedTable.extend(3); l_nestedTable(1) := 'aaa'; l_nestedTable(2) := 'bbb'; l_nestedTable(3) := 'ccc'; -- delete one item l_nestedTable.delete(2); index_num := l_nestedTable.first; for var_index in 1..l_nestedTable.count loop -- check the exists item if l_nestedTable.exists(index_num) then --l_nestedTable.exists(var_index) dbms_output.put_line(l_nestedTable(index_num)); else dbms_output.put_line('delete item'); end if; index_num := l_nestedTable.next(index_num); end loop; end;
- The EXTEND Method: 用于为 nested table or VARRAY 分配空间
1.不加参数,分配一个 null element
2.EXTEND(n),分配 n 个 null element
3.EXTEND(n,i),分配 n 个和第 i 值相同的 element,这对于有 NOT NULL 限制的 element - The FIRST and LAST Methods: 分别返回 COLLECTION 中可用的最低和最高下标,被 DELETE 的不会显示
/* * EXTEND method, FIRST method and LAST method */ declare type my_nestedTable is table of varchar2(20); type my_varray is varray(2) of varchar2(20); l_nestedTable my_nestedTable := my_nestedTable(); l_varray my_varray := my_varray(); begin -- init neseted table l_nestedTable.extend(2); l_nestedTable(1) := 'nestedTable1'; l_nestedTable(2) := 'nestedTable2'; -- init varray l_varray.extend(2); l_varray(1) := 'varray1'; l_varray(2) := 'varray2'; -- the last and first method for var_index in l_varray.first..l_varray.last loop dbms_output.put_line(l_varray(var_index)||'--'||l_nestedTable(var_index)); end loop; end;
- The LIMIT Method: 返回 VARRAY 的最大数目限制,如果用于 nested tables or to associative arrays 将返回 NULL
- The PRIOR and NEXT Methods: 如果应用于初始化了但为空的 COLLECTION 时,返回 null;如果 i 大于等于 COUNT,则 NEXT 返回 null;如果 i 小于等于 FIRST,则 PRIOR 返回 null
/* * LIMIT method, PRIOT method and NEXT method */ declare type my_varray is varray(3) of varchar2(20); type my_table is table of varchar2(20) index by binary_integer; l_varray my_varray := my_varray(); l_table my_table; begin l_varray.extend(2); l_varray(1) := 'varray1'; l_varray(2) := 'varray2'; -- limit method dbms_output.put_line(l_varray.limit||'--'||l_table.limit); l_varray.extend(1); dbms_output.put_line(l_varray.limit); for var_index in l_varray.first..l_varray.last loop -- prior method and next method dbms_output.put_line(l_varray.prior(var_index)||'---'||l_varray.next(var_index)); end loop; end;
- The TRIM Method: 由于删除 nested table or VARRAY 末尾的 n 行,如果不加参数,删除最后一行,如果用于 associative array 将产生编译时错误
/* * TRIM method */ declare type my_nestedTable is table of varchar2(20); l_nestedTable my_nestedTable := my_nestedTable(); begin -- init nested table l_nestedTable.extend(3); l_nestedTable(1) := 'nestedTable1'; l_nestedTable(2) := 'nestedTable2'; l_nestedTable(3) := 'nestedTable3'; -- delete last two row l_nestedTable.trim(2); -- print for var_index in l_nestedTable.first..l_nestedTable.last loop dbms_output.put_line(l_nestedTable(var_index)); end loop; end;
Oracle 集合 方法
猜你喜欢
转载自kevin-gmail-com.iteye.com/blog/1285317
今日推荐
周排行