网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > PL/SQL > 介绍下关于PL/SQ的L关联数组-PLSQL  

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

2008-05-27  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

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

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

中国网管论坛bbs.bitsCN.com

  PL/SQL关联数组 网管下载dl.bitscn.com

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


  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'; 网管下载dl.bitscn.com
  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
网管u家bitscn.net

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

  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'; 网管bitscn_com
  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
网管下载dl.bitscn.com

  – Mission: Apollo 17, Commander: Eugene A. Cernan
网管u家u.bitscn@com

TAGs   关联   关于   介绍       Apollo    apollo_commanders      
 上一篇:ORACLE数据库发生ORA-01460错误-PLSQL   下一篇:讲解SQL与Oracle外键约束中的级联删除-PLSQL
介绍下关于PL/SQ的L关联数组-PLSQL 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: