区别于变长数组和嵌套表的形如数组的使用形式,关联数组(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
文档内容是否对您有帮助?