集合是一组具有相同数据类型的有序数据项。通常,数据项是标量字段,但也可以是用户定义的类型,例如记录类型或对象类型,只要构成用户定义类型的每个字段的结构和数据类型对于集合中的每个元素相同即可。通过在一对括号内使用下标表示法来引用集合中的每个特定数据项。

说明 不支持多级集合(即,集合的数据项是另一个集合)。

最常见的集合类型是数组。在PolarDB PostgreSQL版(兼容Oracle)中,支持的集合类型是关联数组(以前称为Oracle中索引表)、嵌套表和varrays。

使用集合的一般步骤如下:

  • 必须定义所需类型的集合。这可以在SPL程序的声明部分中完成,这将导致只能在该程序中访问的本地类型。对于嵌套表和varray类型,也可以使用CREATETYPE命令来完成,该命令创建一个持久的独立类型,可以由数据库中的任何SPL程序引用。
  • 声明了集合类型的变量。如果没有作为变量声明的一部分进行赋值,那么与声明的变量关联的集合此时将被指示为未初始化。
  • 嵌套表和varray的未初始化集合为null。null集合尚不存在。通常,如果对null集合调用集合方法,则会引发COLLECTION_IS_NULL异常。
  • 存在未初始化的关联数组集合,但没有元素。没有元素的现有集合称为空集合。
  • 要初始化null集合,必须将其变为空集合或为其赋予一个非null值。通常,null集合使用其构造函数进行初始化。
  • 要将元素添加到空关联数组,只需为其键指定值即可。对于嵌套表和varray,通常使用其构造函数将初始值赋予嵌套表或varray。对于嵌套表和varray,随后使用EXTEND方法将集合增长到超出构造函数确定的初始大小。

以下各节介绍了每种集合类型的具体过程。