关键字:
Associative Array、Nested Table、Varray
1. 集合类型概述
集合类型是一种复合类型,包括以下三种:
关联数组(Associative Array)
嵌套表(Nested Table)
可变数组(Varray)
2. 关联数组
关联数组是一组键值对。每个键都是一个唯一的索引,用于定位与之相关联的值,具有唯一键值的集合类型
其具有以下特性:
包含零或多个具有相同数据类型的元素
用户可按键值检索
键值可是整型等数值类型,也可是字符串等非数值类型
键值连续且有序
只能用于PL/SQL环境
语法:
TYPE assoc_type_name
IS TABLE OF element_type [ NOT NULL ] INDEX BY index_type;
index_type ::= INT | VARCHAR | VARCHAR2 | TEXT
3. 可变数组
可变数组是一个数组,其元素数为从零(空)到声明的最大值之间,大小不等。
要访问可变数组变量的元素,可以使用语法 variable_name(index)。指数的下限为 1;上限是当前元素的数量。上限在添加或删除元素时会发生变化,但不能超过声明时指定的最大值。从数据库中存储和检索可变数组时,其索引和元素顺序保持对应。未初始化的可变数组变量是一个空集合。必须通过构造函数或者为其赋予一个非空的值来初始化它。下标类型为INT且从1开始
与嵌套表不同表现在:
可变数组在定义时需指定最大元素个数,且实际应用中不能超过该限制
可变数组的下标必须连续
删除元素时,可变数组不能使用delete(n)和delete(m,n)方法,但可使用delete()方法(即删除所有元素)
语法:
TYPE varray_type_name IS VARRAY
(size_limit) OF element_type
[ NOT NULL ];
4. 嵌套表
在数据库中,嵌套表是一种可以不指定顺序来存储未指定数量的行的类型。
从数据库中检索嵌套表值到 PL/SQL 嵌套表变量时,PL/SQL 会从 1 开始为行提供连续索引。使用这些索引,
可以访问嵌套表变量的各个行。从数据库中存储和检索嵌套表时,嵌套表的索引和行顺序可能会不稳定。当添加或删除元素时,嵌套表变量占用的内存量可以动态的增加或减少。未初始化的嵌套表变量是一个 NULL 集合。必须通过构造函数或为其赋予非空值来初始化它基于键-值对的集合类型。
与关联数组相比,它的键值只能为整型,即从1开始的连续值必须使用和其同名的构造函数进行初始化
语法:
TYPE nest_table_type_name
IS TABLE OF element_type [ NOT NULL ];