文档

关联数组

更新时间:

区别于变长数组和嵌套表的形如数组的使用形式,关联数组(associative array)是一组键值对,使用形式更像是哈希表。

语法

TYPE type_name IS TABLE OF value_type [NULL | NOT NULL] INDEX BY key_type ';'

示例

以下是一个关联数组的基本示例:

DECLARE
  TYPE aarray_type IS TABLE OF INT INDEX BY VARCHAR(10); -- 声明 associative array 局部类型
  aarray aarray_type;  -- 创建变量, 并将它初始化为空
BEGIN
  aarray('a') := 1; -- 赋值
  RAISE NOTICE '%', aarray('a'); -- 取值
END;

结果显示如下:

NOTICE:  1
DO

相比于嵌套表,关联数组的声明语法多了INDEX BY index_type部分,用于声明索引的类型。索引的排序方式由索引类型的排序顺序决定,目前支持正整数或字符串作为索引类型。关联数组会被默认初始化为空,因此您可以对特定索引位置直接进行赋值。如果在取值前没有对该索引位置进行赋值,会出现不存在该元素的错误。以下是一个尝试获取不存在的元素的示例:

DECLARE
  TYPE aarray_type IS TABLE OF INT INDEX BY VARCHAR(10);
  aarray aarray_type;
BEGIN
  RAISE NOTICE '%', aarray('b');
END;

结果显示如下:

ERROR:  associatvie arrays element is not exist
CONTEXT:  PL/SQL function inline_code_block line 5 at RAISE