当前位置:首页 > 网络编程 > 数据库 > Oracle > 介绍下关于PL/SQ的L关联数组

介绍下关于PL/SQ的L关联数组

点击次数:36 次 发布日期:2008-11-22 16:42:14 作者:源代码网
源代码网推荐

    当你想搜索某一个特定元素的值而不是整个数组的时候,PL/SQL关联数组对于名称-值对类型的数组是非常有用的。应用11g文档的话“它就像一个SQL表的简单版本,你可以基于主键的值来提取值”。在PL/SQL中,对于任何数组来说,当用在较少记录中时效率是最高的,例如简单查找表。如果你发现你加载成千上万的记录到数组中,那么你很可能是哪里做错了。

下面是一个典型的名称-值对的示例:

  介绍下关于PL/SQ的L关联数组

 注意,我可以通过名称来简单地访问到一个元素,而不必进行循环。下一个例子显示了怎样对一个关联数组进行循环。这可能看起来与关联数组的意图相反,但是有可能有这种需求:


  declare
  type assoc_arr is table of varchar2(255) index by varchar2(255);
  apollo_commanders assoc_arr;
  begin
  apollo_commanders("Apollo 11" := "Neil Armstrong";
  apollo_commanders("Apollo 12" := "Pete Conrad";
  apollo_commanders("Apollo 13" := "James Lovell";
  apollo_commanders("Apollo 14" := "Alan Shepard";
  apollo_commanders("Apollo 15" := "David Scott";
  apollo_commanders("Apollo 16" := "John W. Young";
  apollo_commanders("Apollo 17" := "Eugene A. Cernan";
  dbms_output.put_line(apollo_commanders("Apollo 11"));
  dbms_output.put_line(apollo_commanders("Apollo 14"));
  end;
  /
   Results:
   Neil Armstrong
   Alan Shepard


  最后,一个更复杂的使用一个常用记录的例子:

  declare
  type assoc_arr is table of varchar2(255) index by varchar2(255);
  apollo_commanders assoc_arr;
  l_current_mission varchar2(255);
  begin
  apollo_commanders("Apollo 11" := "Neil Armstrong";
  apollo_commanders("Apollo 12" := "Pete Conrad";
  apollo_commanders("Apollo 13" := "James Lovell";
  apollo_commanders("Apollo 14" := "Alan Shepard";
  apollo_commanders("Apollo 15" := "David Scott";
  apollo_commanders("Apollo 16" := "John W. Young";
  apollo_commanders("Apollo 17" := "Eugene A. Cernan";
  l_current_mission := apollo_commanders.first;
  loop
  exit when l_current_mission is null;
  dbms_output.put_line("Mission: "||l_current_mission||", Commander: "||apollo_commanders(l_current_mission));
  l_current_mission := apollo_commanders.next(l_current_mission);
  end loop;
  end;
  /
   Results:
   Mission: Apollo 11, Commander: Neil Armstrong
   Mission: Apollo 12, Commander: Pete Conrad
   Mission: Apollo 13, Commander: James Lovell
   Mission: Apollo 14, Commander: Alan Shepard
   Mission: Apollo 15, Commander: David Scott
   Mission: Apollo 16, Commander: John W. Young
   Mission: Apollo 17, Commander: Eugene A. Cernan

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华