首頁
云原生數(shù)據(jù)庫 PolarDB
云原生數(shù)據(jù)庫PolarDB PostgreSQL版(兼容Oracle)
開發(fā)指南(Oracle語法兼容2.0)
集合類型
關(guān)聯(lián)數(shù)組
關(guān)聯(lián)數(shù)組
區(qū)別于變長數(shù)組和嵌套表的形如數(shù)組的使用形式,關(guān)聯(lián)數(shù)組(associative array)是一組鍵值對,使用形式更像是哈希表。
語法
TYPE type_name IS TABLE OF value_type [NULL | NOT NULL] INDEX BY key_type ';'
示例
以下是一個關(guān)聯(lián)數(shù)組的基本示例:
DECLARE
TYPE aarray_type IS TABLE OF INT INDEX BY VARCHAR(10); -- 聲明 associative array 局部類型
aarray aarray_type; -- 創(chuàng)建變量, 并將它初始化為空
BEGIN
aarray('a') := 1; -- 賦值
RAISE NOTICE '%', aarray('a'); -- 取值
END;
結(jié)果顯示如下:
NOTICE: 1
DO
相比于嵌套表,關(guān)聯(lián)數(shù)組的聲明語法多了INDEX BY index_type
部分,用于聲明索引的類型。索引的排序方式由索引類型的排序順序決定,目前支持正整數(shù)或字符串作為索引類型。關(guān)聯(lián)數(shù)組會被默認(rèn)初始化為空,因此您可以對特定索引位置直接進(jìn)行賦值。如果在取值前沒有對該索引位置進(jìn)行賦值,會出現(xiàn)不存在該元素
的錯誤。以下是一個嘗試獲取不存在的元素的示例:
DECLARE
TYPE aarray_type IS TABLE OF INT INDEX BY VARCHAR(10);
aarray aarray_type;
BEGIN
RAISE NOTICE '%', aarray('b');
END;
結(jié)果顯示如下:
ERROR: associatvie arrays element is not exist
CONTEXT: PL/SQL function inline_code_block line 5 at RAISE
文檔內(nèi)容是否對您有幫助?