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)、多级集合:集合中的集合。
浙公网安备 33010602011771号