可变数组 VARRAY(VARIABLE ARRAY 的缩写)是存储有序元素的集合,所有元素都具有相同的数据类型,且每个元素的索引对应元素在该数组中的位置。可变数组存在大小的限制,可以动态进行更改。当创建 VARRAY 时,必须指定 VARRAY 数组的最大长度。OceanBase 数据库根据其数组长度大小在行数据或 LOB 中存储数组对象。

    创建 VARRAY 数组时,OceanBase 数据库不会为它分配空间。它定义了一种类型用来声明:

    • 关系表的列的数据类型

    • 对象类型属性

    • PL 变量,参数或函数返回类型

    创建可变数组的简单语法格式如下:

    1. TYPE varray_name IS VARRAY( size ) OF element_type [ NOT NULL ] ;

    其中,varray_name 是 VARRAY 数据类型的名称;size 是正整数,表示能够容纳的数组元素的最大数量;每一个元素的数据类型是 element_type;默认情况下,元素能够取空值,否则需要使用 NOT NULL 加以限制。

    示例:创建可变数组

    1. obclient> set serveroutput on;
    2. delimiter /
    3. DECLARE
    4. TYPE Foursome IS VARRAY(4) OF VARCHAR2(15);
    5. team Foursome := Foursome('John', 'Mary', 'Alberto', 'Juanita');
    6. PROCEDURE print_team (heading VARCHAR2) IS
    7. BEGIN
    8. DBMS_OUTPUT.PUT_LINE(heading);
    9. FOR i IN 1..4 LOOP
    10. DBMS_OUTPUT.PUT_LINE(i || '.' || team(i));
    11. END LOOP;
    12. DBMS_OUTPUT.PUT_LINE('---');
    13. END;
    14. BEGIN
    15. print_team('2001 Team:');
    16. team(3) := 'Pierre';
    17. team(4) := 'Yvonne';
    18. print_team('2005 Team:');
    19. team := Foursome('Arun', 'Amitha', 'Allan', 'Mae');
    20. print_team('2009 Team:');
    21. END;
    22. /
    23. 2001 Team:
    24. 1.John
    25. 2.Mary
    26. 3.Alberto
    27. 4.Juanita
    28. ---
    29. 2005 Team:
    30. 1.John
    31. 2.Mary
    32. 3.Pierre
    33. 4.Yvonne
    34. ---
    35. 2009 Team:
    36. 1.Arun
    37. 2.Amitha
    38. 3.Allan
    39. 4.Mae
    40. obclient> delimiter ;