1.集合类型
集合(collection):它是存放一组数据类型相同的数据,是相同类型元素的组合
集合数据类型分类:
1.索引表(index by tables):或者叫做关联数组(associative arrays)
2.嵌套表(nested table)
3.可变长度数组(varray:variable-size arrays)
2.集合的属性和方法
集合名字.属性名 集合名字.方法名
1.first取集合的第一个元素的下标
2.last取集合的最后一个元素的下标
3.count 取集合的总长度
4.limit 取集合元素下标的最大值 (索引表和嵌套表是不限个数的,所以返回null,变长数组返回定义时的最大索引 )
5.delete([n]) 删除集合中的元素,加n表示下标,删除对应下标的值
6.extend(n[,ind]):扩展集合元素 n是一个数字,表示扩展的元素个数,ind是集合中的一个元素的下标,加上它表示扩展集合时,给扩展的元素加上值,值是ind这个下标对应的元素
7.next(下标)取当前元素下一个元素的下标
8.prior(下标):取当前元素上一个元素的下标
3.索引表
- 使用整数(可为负)(pls_integer,binary_integer)或字符串来作为下标,
- 下标可以不连续;
- 元素个数无限制,
- 只能用在PLSQL中,不可以存储在数据库中.
定义索引表类型的语法:
–1声明索引表类型
type 类型名称 is table of 数据类型(是集合中值的数据类型)index by 下标的数据类型(varchar2,pls_integer,binary_integer);
type mytype is table of varchar2(200) index by pls_integer;
2声名一个集合变量
变量名 类型名
v mytype;
集合中数据的存取:
集合变量(下标)
v(下标);
v(下标):=值;
declare
--声名一个索引表类型
type mytype is table of varchar2(200) index by binary_integer;
--声名一个索引表类型变量
tab mytype;
--声名一个变量保存索引表的下标
ind varchar2(20);
begin
tab(1):='张三';
tab(-2):='李四';
tab(0):='王五';
ind:=tab.first;
---遍历集合
loop
--打印集合元素
dbms_output.put_line(tab(ind));
--退出条件
exit when ind=tab.last;
ind:=tab.next(ind);
end loop;
end;
declare
--声名记录类型
type recType is record(
name varchar2(30),
sex varchar2