关联数组
Oracle9i Database 9.2.0 版新增内容
关联数组是
index-by table(甚至更早以前称为
PL/SQL table)的新名称。这些已经应用了一段时间了,但在 9.2.0 版之前,唯一可能的声明是……
type my_tab_t is table of number index by binary_integer;
9.2.0 版引入了两种新的可能性……
type my_tab_t is table of number index by pls_integer;
type my_tab_t is table of number index by varchar2(4000);
在上面的内容中,of 的数据类型并不值得注意,但 index by 的数据类型需注意。varchar2 数据的大小可能是低于 32767 的规定上界的任何值。
注意:除用 index by pls_integer 或者 index by varchar2(n) 之外进行的声明仍将失败,如下所示……
PLS-00315:Implementation restriction:unsupported table index type
.……因此可以说,如果需要按日期检索,那么就必须进行 To_Char 转换。
新的 index by pls_integer 功能使得在任何新的编程应用中都不再需要使用旧的 binary_integer。
新的 index by varchar2 功能引发了许多新的激动人心的代码编写的可能性,并因此使该特性名称变更为关联组,从而也在讨论 3GL 时与一般的术语使用相一致。
例如,index-by 表经常在专门的解决方案中用来在特殊情形下缓存表的数值以推进性能,尤其是在需要进行非常频繁的查询时。以前这需要进行显式地编程。此比较显示了 index by varchar2 表如何简化编码。编码不仅更为简化,也更高效了!
为完整起见,此比较允许您计算填充一张一百万字节组的 index by varchar2 表所需的时间,和填充一张同样数据的数据库表所需的时间。PL/SQL 表大约要快 20 倍。同样也演示了逐个访问 index by varchar2 表中元素的范例……
idx := the_table.First;
while idx is not null
loop
idx := the_table.Next(idx);
end loop;
此示例说明了 index by varchar2 表创建第一流且高效的独特解决方案的能力。
Bryn Llewellyn,PL/SQL 产品经理,Oracle Corp
最新更新时间为 2002 年 5 月 13 日