关联数组是一组键值对。每个键都是一个唯一的索引,用于定位与之相关联的值,语法格式如下。
索引的数据类型可以是字符串类型(VARCHAR2、VARCHAR、STRING或LONG)或PLS_INTEGER。其中数据是按索引排序顺序存储,而不是按创建顺序存储。
与数据库表相同的是:
①关联数组在填充之前为空,但不为NULL。
②关联数组可以容纳不定量的元素,可以在不知道其位置的情况下访问这些元素。
与数据库表不同的是:
①关联数组不需要磁盘空间或网络操作。
②关联数组不能使用DML语句操作。
示例3.1: 以字符串为索引的关联数组。
功能描述: 本例定义一种按字符串索引的关联数组,并声明该类型的变量,用3个元素填充该关联数组,然后更改其中一个元素的值,并打印值(数据是按索引排序顺序存储,而不是按创建顺序)。
程序代码如下。
程序运行结果如下。
示例3.2: 函数返回以PLS_INTEGER为索引的关联数组。
功能描述: 本例定义了一种以PLS_INTEGER为索引的关联数组,以及一个返回该关联数组类型的函数。
程序代码如下。
程序运行结果如下。
关联数组适用于以下情况。
①查找一个相对较小的表,每次调用子程序或初始化声明子程序的包时,都可以在内存中构造它。
②向数据库服务器传递集合和从数据库服务器传递集合。
关联数组用于临时数据存储。要使关联数组在数据库会话的生命周期内保持存在,请在包规范中声明它,并在包体中对其进行填充赋值。