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

集合和成员函数

2005-11-05  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  有时也被称为索引表(index-by tables),可以在PL/SQL中使用,能够模仿数组的非永久表。
  
  用法:
  
  1、 定义一个PL/SQL表类型
  
  2、 声明这种类型的变量。
  
  3、 将记录添加到PL/SQL表中,并采用与引用数组元素大体相同的方式引用他们
  
  语法:p233
  
  特点:只能有一列和一个主健。但是可以有无数的行
  
  举例:
  
  set serveroutput on
  
  declare               --定义PL/SQL表
  
  type my_text_table_type is table of varchar2(200)
  
  index by binary_integer;
  
  type my_emp_table_type is table of employees%rowtype
  
  index by binary_integer;
  
  l_text_table my_text_table_type;
  
  l_emp_table my_emp_table_type;
  
  begin
  
  l_text_table(1) :=’donny’;
  
  l_text_table(2) :=’Chen’;
  
  l_emp_table(10).employee_id :=10;
  
  l_emp_table(10).first_name   :=’Sean’;
  
  l_emp_table(10).last_name   :=’Dillon’; 网管u家u.bitsCN.com
  
  l_emp_table(10).email           :=’donny@hotmail’;
  
  l_emp_table(10).hire_date       :=sysdate;
  
  l_emp_table(10).job_id       :=’HR’;
  
  l_emp_table(20).employee_id :=20;
  
  l_emp_table(20).first_name   :=’Chris’;
  
  l_emp_table(20).last_name   :=’Doo’;
  
  l_emp_table(20).email           :=’donny@sina’;
  
  l_emp_table(20).hire_date       :=sysdate-5;
  
  l_emp_table(20).job_id       :=’IT’;
  
  dbms_output.put_line(l_text_table.count);
  
  dbms_output.put_line(l_emp_table.count);
  
  dbms_output.put_line(l_text_table(1));
  
  dbms_output.put_line(l_text_table(2));
  
  dbms_output.put_line(l_emp_table(1).first_name);
  
  dbms_output.put_line(l_emp_table(2).first_name);
  
  end;
  
  /
  
  关于索引算子:
  
  必须是合法的BINARY_INTEGER,介于--2的31次幂~2的31次幂 网管bitscn_com
  
  从PL/SQL表中删除记录:
  
  declare               --定义PL/SQL表
  
  type my_text_table_type is table of varchar2(200)
  
  index by binary_integer;
  
  l_text_table my_text_table_type;
  
  l_empty_table my_text_table_type;
  
  begin
  
  l_text_table(10):=’A value’;
  
  l_text_table(20):=’Another value’;
  
  l_text_table(30):=’third value’;
  
  dbms_output.put_line(l_text_table.count);
  
  l_text_table.DELETE(20);
  
  dbms_output.put_line(l_text_table.count);
  
  l_text_table.DELETE;
  
  dbms_output.put_line(l_text_table.count);
  
  l_text_table(15):=’some text’;
  
  l_text_table(25):=’ some more text’;
  
  dbms_output.put_line(l_text_table.count);
  
  l_text_table:=l_empty_table;
  
  dbms_output.put_line(l_text_table.count);
  
  end;
  
  /
   网管u家u.bitsCN.com
  FIRST / NEXT / LAST:
  
  我们知道count返回表中行的数量。
  
  FIRST: 返回PL/SQL表中“第一个”或者最小的索引。LAST则是最后一个。
  
  NEXT返回PL/SQL表中当前索引的下一个索引。NEXT有一个参数,即当前的索引。
  
  Conn scott/tiger
  
  Set serveroutput on
  
  Declare
  
  type my_text_table_type is table of varchar2(200)
  
  index by binary_integer;
  
  l_text_table my_text_table_type;
  
  l_index number;
  
  begin
  
  for emp_rec in (select * from emp) loop
  
  l_text_table(emp_rec.empno):=emp_rec.ename;
  
  end loop;
  
  l_index:= l_text_table.first;
  
  loop
  
  exit when l_index is null;
  
  dbms_output.put_line(l_index ||’:’|| l_text_table(l_index));
  
  l_index :=l_text_table.next(l_index);
  
  end loop;
  
  end;
  
  /
  
  记录:
  
  TYPE <记录名称> IS RECORD(
网管bitscn_com

  
  字段名1 类型;
  
  字段名2 类型;
  
  。。。。。。
  
  );
  
  记录可以拥有任意数目的不同数据类型的列,而PL/SQL表却不是这样的,只能有一列和一个主健。
  
  declare
  
  type location_record_type is record(
  
  street_address  varchar2(40),
  
  postal_code     varchar2(40),
  
  city           varchar2(30),
  
  state_province   varchar2(25),
  
  contry_id       char(2) not null :=’US’
  
  );
  
  l_my_loc location_record_type;
  
  begin
  
  l_my_loc.street_address:=’
  
  Oracle street
  ’;
  l_my_loc.postal_code:=’10010’;
  
  l_my_loc.city:=’Reston’;
  
  l_my_loc.state_province:=’CA’;
  
  dbms_output.put_line(l_my_loc.street_address);
  
  dbms_output.put_line(l_my_loc.postal_code);
  
  dbms_output.put_line(l_my_loc.city);
  
网管u家www.bitscn.net

  dbms_output.put_line(l_my_loc.state_province);
  
  end;
  
  /
  
  绑定变量:
  
  declare
  
  type Numtab is table of char(15) index by binary_integer;
  
  type Nametab is table of char(25) index by binary_integer;
  
  vnums Numtab;
  
  vname Nametab;
  
  t1 char(5);
  
  t2 char(5);
  
  t3 char(5);
  
  procedure get_time( t out number) is
  
  begin
  
  select to_char(sysdate,’sssss’) into t from dual;
  
  end;
  
  begin
  
  for j in 1.. 15000 loop
  
  vnums(j) :=j;
  
  vname(j) :=’vendor nmane ‘ || to_char(j);
  
  end loop;
  
  get_time(t1);
  
  forall i in 1.. 15000
  
  insert into vender values(vnums(i), vname(i));
  
  get_time(t2);
  
  for i in 1.. 15000 loop
  
  insert into vender values(vnums(i), vname(i));
   网管联盟bitsCN_com
  end loop;
  
  get_time(t3);
  
  dbms_output.put_line(‘Forall loop ’|| to_char(t2-t1));
  
  dbms_output.put_line(‘For loop ’|| to_char(t3-t2));
  
  end;
  
  /
  
  declare
  
  type Numtab is table of char(15) index by binary_integer;
  
  type Nametab is table of char(25) index by binary_integer;
  
  vnums Numtab;
  
  vname Nametab;
  
  cursor c1 is select * from vender;
  
  begin
  
  open c1;
  
  fetch c1 bulk collect into vnums, vname;
  
  dbms_output.put_line(vnums.count);
  
  close c1;
  
  end;
  
  /
  
  create or replace type add_ty as object(
  
  h_no number(3),
  
  h_street varchar2(20),
TAGs   函数   成员   集合   dbms_output.put_line   l_emp_table   l_text_table      
 上一篇:过程,函数,程序包   下一篇:如何查询redo logfile的使用率
相关文章列表
集合和成员函数 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.PL/SQL - 嵌套游标 cursor-PLSQL
2.用一个实例讲解Oracle数据库的PL/SQL语句
3.PL/SQL----触发器-PLSQL
4.mysql存储过程写法—动态参数运用-PLSQL
5.PL/SQL Developer导出分区索引脚本-PLSQL
6.PL/SQL collection— table() 函数-PLSQL
7.SQL Server 2005 中的架构与用户-PLSQL
8.Oracle数据库维护常用SQL语句集合(2)-P
9.Oracle数据库维护常用SQL语句集合(3)-P
10.再议SQL Server临时表和表变量-PLSQL
最新推荐文章:
1.与数据库无关的处理放到数据库以外来实现
2.Oracle 10g第2版新特性之SQL和PL/SQL
3.通过PL/SQL访问Web Services
4.菜鸟学oracle - 用PL/SQL画直方图
5.重新编译PLSQL中无效对象或指定对象
6.Oracle高级技巧
7.深入了解Oracle 10g新的多重集运算符
8.在SQL中删除重复记录(多种方法)
9.Oracle:PL/SQL中怎样使用Array
10.数据库手册:速查Oracle函数列表
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■