変動配列(Varrayとも呼ばれ、Variable Arrayの略)は、順序付けられた要素の集合であり、すべての要素は同じデータ型を持ち、各要素のインデックスはその要素が配列内における位置を表します。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
変動配列にはサイズの制限があります。変動配列を作成する際には、その最大長を指定する必要があります。
変動配列を作成する簡単な構文は以下のとおりです:
TYPE varray_name IS VARRAY( size ) OF element_type [ NOT NULL ] ;
ここで、varray_name は変動配列のデータ型名、size は正の整数で、収容可能な配列要素の最大数を表し、各要素のデータ型は element_type です。デフォルトでは要素にNULL値を含めることができますが、それを防ぐには NOT NULL を指定する必要があります。
例:変動配列の作成
obclient> DECLARE
TYPE players IS VARRAY(5) OF VARCHAR2(20);
team PLAYERS := players('Andrew', 'Barton', 'Conrad', 'Dick','Edward');
PROCEDURE print_team (heading VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE(heading);
FOR i IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE(i || '.' || team(i));
END LOOP;
DBMS_OUTPUT.PUT_LINE('---');
END;
BEGIN
print_team('First Team:');
team(2) := 'Albert';
team(5) := 'George';
print_team('Second Team:');
team := players('Charles', 'Carl', 'James', 'Gary','Brian');
print_team('Third Team:');
END;
/
Query OK, 0 rows affected
First Team:
1.Andrew
2.Barton
3.Conrad
4.Dick
5.Edward
---
Second Team:
1.Andrew
2.Albert
3.Conrad
4.Dick
5.George
---
Third Team:
1.Charles
2.Carl
3.James
4.Gary
5.Brian
---
変動配列は以下のシナリオに適しています:
要素の最大数が既知である場合。
要素へのアクセスが通常は順序良く行われる場合。
変動配列はすべての要素を同時に格納または取得する必要があるため、要素数が非常に多いシナリオにはあまり適していません。