购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 集合类型

在集合类型中,内部元素始终具有相同的数据类型,可以通过集合变量的唯一索引访问它的每个元素。语法格式如下。

创建集合变量,需要先定义集合类型,然后创建该类型的变量,或者使用%TYPE创建。

PL/SQL有3种集合类型。

(1)关联数组(Associative Array)。

(2)可变数组(Varray)。

(3)嵌套表(Nested Table)。

表3.1对3种集合类型进行了比较。

表3.1 三种集合类型比较

其中:

①元素数量。如果指定了元素数量,则该数量为集合中的最大元素数。如果未指定元素数,则集合中的最大元素数为索引类型的数量上限。

②密度。密集集合的元素之间没有间隙,第一个和最后一个元素之间的每个元素都必须已定义并具有一个值(该值可以为NULL,除非该元素具有NOT NULL约束)。稀疏集合的元素之间可以存在间隙。

③未初始化状态。空集合,一个没有元素的集合。要添加元素,需要调用集合的EXTEND方法;NULL集合,一个不存在的集合。要将NULL集合更改为存在的状态,必须通过将其设置为空或为其分配非空值来初始化它(通过调用相关构造函数)。无法通过直接调用EXTEND方法来初始化一个NULL集合。

④何处定义。PL/SQL块中定义的集合类型属于本地类型。它仅支持在块中使用,并且仅当块位于独立子程序或包子程序中时才会被存储在数据库中。包规范中定义的集合类型是公共类型。可以通过包名限定(package_name.type_name)从包外部引用它。它会一直存储在数据库中,直到删除包。在模式中定义的集合类型是独立类型,可以使用CREATE TYPE创建它。它存储在数据库中,直到使用DROP TYPE删除它。

⑤作为复合类型的元素:要成为复合类型的元素类型,集合类型必须是独立集合类型,即定义在模式中的集合类型。 wnjwl2JI/y+N4AHLSfkw4/O8S8fKQ08uQ2diPzMMBec5GNYqWU2bXMayFiwZVvg0

点击中间区域
呼出菜单
上一章
目录
下一章
×