关联数组是一组无界的键值对。每个键都是唯一的,作为保存有相应数据的元素的下标。因此您可以访问元素而不用知道它们在数组中的位置以及不用遍历整个数组。
键的数据类型可以是 PLS_INTEGER 或 VARCHAR2 (长度)。
如果键的数据类型是 PLS_INTEGER,关联数组是按整数索引(indexed by integer)并且是
密集型(指元素之间没有空隙),则从第一个元素到最后一个元素之间的每个元素都是有定义的,并且有值)值可以是 NULL )。
如果键的数据类型是 VARCHAR2(长度),关联数组是按字符串索引(indexed by string)并且是稀疏型(指元素之间可能有空隙)。
当遍历密集的关联数组时,不需要考虑元素之间的空隙;当遍历稀疏的关联数组时,需要留意空隙。
给一个关联数组元素赋值,可以使用赋值表达式:
array_name(key) := value
如果键不在数组中,这个赋值语句就会向数组中添加一个键值对;否则,赋值语句就修改了该键对应的值为新的值。
关联数组在临时存储数据时非常有用,它们不需要像表一样占用空间或网络资源,但是因为关联数组只是为了临时存储,您不可以通过 DML 语句操作它们。
如果在包里面定义关联数组变量,在包体里面给它赋值,则关联数组在数据库会话期间都保持可见;否则,它只在所在的子程序范围内可见。