plsql 集合使用详解

 

-- Created on 2009-4-22 by ADMINISTRATOR

declare

  -- Local variables here

  i integer;

  type ARR_1 is table of varchar2(20)

      index by BINARY_INTEGER;

  --定义的一个 联合数组 不能初始化

  arr ARR_1;

  

  --定义一个嵌套表 需要初始化 没有规定最大元素个数

  TYPE ARR_2 IS TABLE OF VARCHAR2(20);

  arr_02 ARR_2:=ARR_2('A','B','C');

  

  --定义一个 可变数组 需要初始化 规定最大元素个数是5

   TYPE ARR_3 IS VARRAY(10) OF VARCHAR2(20);

   --TYPE ARR_3 IS VARYING ARRAY(5) OF VARCHAR2(20);

   arr_03 ARR_3:=ARR_3('a','b','c');

begin

  -- 联合数组

  arr(-1):=' A ';

  arr(5):=' B ';

  dbms_output.put_line(arr(-1)||arr(5)||'元素中个数:'||arr.count);

  arr.delete(-1,5);

  dbms_output.put_line('arr元素中个数:'||arr.count);

  

  

  --使用嵌套表

  dbms_output.put_line('arr_02元素中个数:'||arr_02.count);

  for i in 1..arr_02.count loop

     dbms_output.put_line(arr_02(i));

  end loop;

  --arr_02(4):='fads'; 这里将会出错 提示信息:超出下标

  arr_02.delete(1); --删除第一个元素

  arr_02.delete(1,3); --删除 1,2

  dbms_output.put_line('arr_02元素中个数:'||arr_02.count);

  

  

  --可变数组

  -- arr_03(4):='fads'; 仍然要出错

    dbms_output.put_line('元素中个数:'||arr_03.count);

  for i in 1..arr_03.count loop

     dbms_output.put_line(arr_03(i));

  end loop;

  IF arr_03.exists(4) then

    dbms_output.put_line('arr_03存在第四个元素');

  else

    dbms_output.put_line('arr_03不存在第四个元素');

  end if;

  arr_03.extend(2,1); --在两个位于1处的 元素 添加到末尾

  --extend;//添加一个空元素到最后

  --extend(2);添加两个NULL 到元素最后

  arr_03(3):='d';

  arr_03(4):='e';

  dbms_output.put_line('arr_03添加了元素');

   for i in 1..arr_03.count loop

     dbms_output.put_line(arr_03(i));

  end loop;

  DBMS_OUTPUT.PUT_LINE('ARR_03最后一个元素下标是:'||arr_03.LAST);

  DBMS_OUTPUT.PUT_LINE('ARR_03第一个元素下标是:'||arr_03.FIRST);

  DBMS_OUTPUT.PUT_LINE('ARR_03第一个的下一个元素下标是:'||arr_03.NEXT(1));

  DBMS_OUTPUT.PUT_LINE('ARR_03第三元素是:'||arr_03.PRIOR(4));

  

  dbms_output.put_line('嵌套表的上限: '||arr_02.limit);

  dbms_output.put_line('可变数组上限: '||arr_03.limit);

  

  DBMS_OUTPUT.PUT_LINE('删除 最后两个元素');

  arr_03.trim(2);--arr_03.trim();删除最后一个

  dbms_output.put_line('arr_03现在的集合的元素个数'||arr_03.count);

 end;

 

 

运行结果:

 

 

A B 元素中个数:2

arr元素中个数:0

arr_02元素中个数:3

A

B

C

arr_02元素中个数:0

元素中个数:3

a

b

c

arr_03不存在第四个元素

arr_03添加了元素

a

b

d

e

a

ARR_03最后一个元素下标是:5

ARR_03第一个元素下标是:1

ARR_03第一个的下一个元素下标是:2

ARR_03第三元素是:3

嵌套表的上限:

可变数组上限: 10

删除 最后两个元素

arr_03现在的集合的元素个数3

 

 

 

集合:

    联合数组,嵌套表,可变数组

 

 联合数组 嵌套表 可变数组
 type. is table of .. index by BINARY_INTEEGER type.. is table of .. type.. is varray|varing array(..) of ..
 不初始化 可以初始化 可以初始化
 下标 从-2144....+2144... 没有最大上限 有最大上限
 下标随便 下标从1开始 下标从1开始

 

函数 列表:

   count: 指出元素个数 包括NULL 元素

   exists(x):判断是x下标处元素否存在

   extend: 在集合最后插入一个空元素

   extend(x):在集合最后插入X个NULL元素

   extend(x,y):在集合最后插入x个 Y位置的元素

   FRIST:第一个元素下标

   LAST:最后一个元素的下标

   NEXT:下一个元素的下标

   PRIOR:上一个于元素的下标

   LIMIT:元素集合的上限数量 嵌套表的limit是 空

   TRIM:删除集合最后一个元素

   TRIM(X): 删除集合最后X个元素

   DELETE:删除所有元素

   DELETE(X):删除下标是X的元素

   DELETE(X,Y):删除第X 到 Y 的元素,不包括Y

 

因网易博客关闭,搬迁至此,写于:2010-03-07 12:07:07

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值