EXTEND

extend是一个过程,用于添加元素位置到变长数组或嵌套表的末尾,并将其设置为NULL。

extend的形式如下:

  • collection.extend():添加一个NULL元素到集合尾部。

  • collection.extend(number):添加number个NULL元素到集合尾部。

extend 对集合内部大小进行操作。如果 delete 删除一个元素但为其保留占位符,则 extend会认为该元素存在。

示例

以下是一个extenddelete的结合使用的示例。

DECLARE
  TYPE nt_type IS TABLE OF NUMBER;
  nt nt_type := nt_type(11, 22, 33);
  PROCEDURE print(nt nt_type) IS 
    i  NUMBER;
  BEGIN
    i := nt.FIRST;
    IF i IS NULL THEN
      RAISE NOTICE 'nt 为空';
    ELSE
      WHILE i IS NOT NULL LOOP
        RAISE NOTICE 'nt.(%) = %', i, nt(i);
        i := nt.NEXT(i);
      END LOOP;
    END IF;
    RAISE NOTICE '---';
  END;
BEGIN
  print(nt); -- 打印三个元素
 
  nt.DELETE(3); -- 删除第三个元素
  print(nt);
 
  nt.EXTEND; -- 添加一个 NULL 元素到嵌套表尾部,由于DELETE并不会删除位置,因此会添加在第四位
  print(nt);
END;

结果显示如下:

NOTICE:  nt.(1) = 11
NOTICE:  nt.(2) = 22
NOTICE:  nt.(3) = 33
NOTICE:  ---
NOTICE:  nt.(1) = 11
NOTICE:  nt.(2) = 22
NOTICE:  ---
NOTICE:  nt.(1) = 11
NOTICE:  nt.(2) = 22
NOTICE:  nt.(4) = <NULL>
NOTICE:  ---
DO