在数据库中,嵌套表是一种可以不指定顺序来存储未指定数量行的类型。
从数据库中检索嵌套表值到PL/SQL嵌套表变量时,PL/SQL会从1开始为行提供连续索引。使用这些索引,可以访问嵌套表变量的各个行。语法是variable_name(index)。从数据库中存储和检索嵌套表时,嵌套表的索引和行顺序可能不稳定。
当添加或删除元素时,嵌套表变量占用的内存量可以动态地增加或减少。
未初始化的嵌套表变量是一个NULL集合。必须通过构造函数或为其赋予非空值进行初始化。
示例3.4: 块内部的嵌套表类型。
功能描述: 本例定义一个块内部的嵌套表类型,然后声明该类型的变量(使用构造函数初始化),并定义一个打印嵌套表的存储过程。之后调用该存储过程3次:初始化变量后、更改一个元素的值后,以及使用构造函数更改所有元素的值后。在第2次构造函数调用之后,嵌套表只有2个元素,引用元素3会引发错误。
程序代码如下。
程序运行结果如下。
示例3.5: 独立的嵌套表类型。
功能描述: 本例定义了一个独立的类型nest_type和1个独立的存储过程show_nesttype,用来打印该类型的变量。匿名块声明1个类型为nest_type的嵌套表变量,用构造函数将其初始化为空,变量初始化后,使用构造函数更改所有元素的值,两次调用show_nesttype。
程序代码如下。
程序运行结果如下。
嵌套表适用于以下情况。
①未指定元素的数量。
②索引值是不连续的。
③需要删除或更新某些元素,但不能同时删除或更新所有元素。