table of number index by varchar2(100)

来源:互联网 发布:迅雷玩客云 淘宝众筹 编辑:程序博客网 时间:2024/06/02 05:39
--字符串序列要这样
declare
    type t   istable of number(3) indexby varchar2(3);
   hash_t t;  
   l_row varchar2(3);
  begin
  hash_t('a') := 10;
  hash_t('b') := 20;  
  l_row :=hash_t.first;
  while(l_rowisnot null) loop
  dbms_output.put_line(hash_t(l_row));
  l_row:=hash_t.next(l_row);
  endloop;
  end;
--数字序列可以这样
declare
    type t   istable of number(3) indexby pls_integer;
   hash_t t;  
   l_row varchar2(3);
  begin
  hash_t(1) := 10;
  hash_t(2) := 20;  
  fori inhash_t.first.. hash_t.lastloop
  dbms_output.put_line(hash_t(i));
  endloop;
  end;



语句:type  numbers  is table of number index by binary_integer;其作用是,加了”index by binary_integer ”后,numbers类型的下标就是自增长,
可以自动根据下标找到对应的值。numbers类型在插入元素时,不需要初始化,不需要每次extend增加一个空间。
  而如果没有这句话“index by binary_integer”,那就得要显示对初始化,且每插入一个元素到numbers类型的table中时,都需要先extend.
   没加“index by binary_integer”时:
  declare
  type numbers is table of number;
  m   numbers := numbers();
  begin
  m.extend;
  m(1) := 2;
  m.extend;
  m(2) := 3;
  for i in1 .. m.count loop
  dbms_output.put_line(m(i));
  end loop;
  end;
  输出:2,3
  而如果加了“index by binary_integer”,代码如下写就可以达到上面的效果
      declare 
 type numbers is table of number index by binary_integer;
      m numbers;
    begin
      m(1) := 2;
     m(2) := 3;
      for i in 1..m.count loop
      dbms_output.put_line(m(i));
     end loop;
  end;


阅读全文
0 0
原创粉丝点击