ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 嵌套表中的delete方法

嵌套表中的delete方法

原创 Linux操作系统 作者:cato2013 时间:2013-10-26 20:50:05 0 删除 编辑
  刚学习数组和嵌套表,对其中的delete方法有几个地方容易产生误解。具体如下:
 
误解一:delete方法只针对嵌套表,数组没有delete方法。
数组是由一组相同性质的元素紧密排列组成,通过下标表示各个元素,因为是紧密排序的,所以数组不能使用delete(n)的方式删除某个元素。但是,可以使用delete(不带下标)对整个数组所有元素进行删除。
如:
declare
  type num_varray is varray(5) of number;
  v_numvarray num_varray:=num_varray(1,2,3,4,5);
begin
  dbms_output.put_line(to_char(v_numvarray.count));
  v_numvarray.delete;
  dbms_output.put_line(to_char(v_numvarray.count));
end;
输出:
5
0
 
误解二:在上例中,通过delete操作,我们发现元素及下标都删除了,所以在嵌套表中,delete(n)进行删除操作后,往往会认为该元素及下标也都删除了。实际上,对嵌套表中某个或某几个元素进行delete,仅仅是删除了元素的值,该元素的placeholder还是保留在那里的。这时候count方法不对其进行统计(官文原句:When tallying elements,COUNT ignores deleted elements )。
如:
declare
  type num_table is table of number;
  v_num_tab num_table:=num_table(null,null,null,null,null);
begin
  dbms_output.put_line(to_char(v_num_tab.count));
  v_num_tab(1):=1001;
  v_num_tab(2):=1002;
  v_num_tab.delete;                   --删除所有元素及下标
  dbms_output.put_line(to_char(v_num_tab.count));--输出0
  v_num_tab.extend(2);
  dbms_output.put_line(to_char(v_num_tab.count));--输出2
  v_num_tab(1):=10081;
  v_num_tab(2):=10082;
  v_num_tab.delete(2);            --删除下标为2的元素的值;但下标还保存。这时可以直接给下标为2的元素赋值!!!
  dbms_output.put_line(to_char(v_num_tab.count));--输出1
  v_num_tab.extend(2);
  dbms_output.put_line(to_char(v_num_tab.count));--输出3
 dbms_output.put_line(to_char(v_num_tab.next(3)));--输出4
  v_num_tab(2):=100882;
  dbms_output.put_line(to_char(v_num_tab.count));  --这里输出4,因为上面对下标2的元素进行了赋值。
end;

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28570326/viewspace-775099/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2013-10-08

  • 博文量
    1
  • 访问量
    2080