3.3)、用数据填充集合:

  就是对集合中的元素赋值,需要注意的是,关联数组里的索引是乱写的,只要在范围负的2的31次方到正的2的31次方减去1,赋值包括创建元素,然后再该索引处保存值;而嵌套表和Varray的索引是单调递增的,是由PL/SQL引擎赋值的,比如说,如果初始化了n个元素,下标就是从1到n,Extend方法对嵌套表或者Varray类型进行扩展后就可以对其元素赋值。

  示例:countdown_test_list(50):='Interenal pressure';

  关联数组由于它的索引值是没有规律的,但是根据不同Index by 类别,有不同的索引取值范围:

  Index By Binary_Integer   -231到231-1

  Index by Pls_Integer        -231到231-1

  Index by simple_Ingeger   -231到231-1

  Index by Natural      0   到231-1

  Index by Positive       1   到231-1

  Index by SignType     -1 \0 \1

  Index by Varchar2(N)    指定长度的任意字符串

  用关系表中的行赋值(嵌套表的操作或者关联数组)

  Declare

  Type emp_copy_t Is Table Of employees%ROWTYPE

  l_emps emp_copy_t :=emp_copy_t();

  begin

    l_emps.Extend;

    select * into l_emps(1) from employees where id =...

  end

  Declare

    Type emp_copy_t Is Table of employees%ROWTYPE Index by Pls_Integer;

    l_emps emp_copy_t;

  Begin

  For emp_rc in (select * from employees)

  loop

    l_emps(emp_re.employee_id):=emp_rc;

  end loop;

4)、访问集合内的数据:

  访问集合中的元素就根据集合中元素的索引值就可以了,不过,如果访问的索引值这个集合不存在,就会抛异常的,For循环读取集合中的元素的时候,要注意是不是紧凑型的数据,如果不是的,循环读取也会报错,对于关联数组不是紧凑型的集合,嵌套表刚开始是紧凑型的,删除元素以后就不是紧凑型的了,Varray是紧凑型的。

5)、字符串类型的索引:

  字符串索引的使用起来和整数类型的索引几乎一样,而且字符串索引使用比较灵活,不过需要注意的是,性能方面,如果用到的字符串索引长度过长(超过100个字符)就会降低集合的性能。(本身字符串索引在使用的时候,在数据库会自动把字符串转换为对应的“哈希”成一个整数值在使用的,字符串越长,消耗的性能也越多,所以会越慢)

6)、复杂数据类型的集合:

   记录类型的集合,这种类型只适合在PL/SQL中声明的集合类型,数据库定义的嵌套表和Varray类型就不能使用%ROWTYPE定义的记录类型。

7)、多级集合:集合中的集合。

 

posted on 2013-07-18 08:22  Kelly_HanShuai  阅读(103)  评论(0)    收藏  举报