EXTEND方法

为了扩大嵌套表或变长数组的容量,可以使用EXTEND方法。但该方法不能用于索引表。

EXTEND方法有三种形式:

  1. EXTEND: 在集合的末端添加一个空元素。
  2. EXTEND (N): 在集合的末端添加N个空元素。
  3. EXTEND (M,N): 将第N个元素拷贝M份,并添加到集合的末端。

例如,下面的语句在嵌套表courses的末端添加了元素1的5个副本:

courses.EXTEND(5,1);

EXTEND操作的是集合内部大小,其中也包括被删除的元素。所以,在扩展集合大小的时候,EXTEND也会把被删除的元素考虑在内。PL/SQL会为每一个被删除的元素保留一个占位符,以便在适当的时候让我们重新使用。

示例:EXTEND方法

--清理环境
DROP PROCEDURE proc;
DROP TABLE tab CASCADE;

create table tab(a varchar(2));
insert into tab values('a');

CREATE OR REPLACE PROCEDURE proc AS
declare
    type table_typ is table of tab.a%type;
    typ table_typ;
begin
    typ:=table_typ('tt');
    typ.extend(5,1);
    dbms_output.put_line( '集合元素总个数:' || typ.count);
end;

/   
EXEC proc;

--删除
DROP PROCEDURE proc;
DROP TABLE tab CASCADE;

注解

不能使用EXTEND初始化一个空集合。同样,当我们对嵌套表或变长数组添加了NOT NULL约束之后,就不能再使用EXTEND的前两种形式了。