PLは、同じ型の要素を固定サイズで順序付きに格納するための配列に似たデータ構造を提供しており、順序付きデータセットの保存に使用されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
配列は連続したメモリ領域で構成されています。最も左側のビットが最初の要素に対応し、最後の要素は最も右側のビットに対応します。
次の例のように、コマンドラインを使用して配列タイプを作成できます。
CREATE OR REPLACE TYPE varray_type_name IS VARRAY(n) of <element_type>;
次の例のように、PLブロック内で動的に配列タイプを作成できます。
TYPE varray_type_name IS VARRAY(n) of <element_type>;
ここで、varray_type_name は配列タイプの名前、n は要素数、element_type は要素の型です。
obclient> DECLARE
TYPE alpha IS TABLE OF VARCHAR2(1);
l alpha := alpha('A', 'B', 'C', 'D');
BEGIN
FOR i IN l.FIRST .. l.LAST LOOP
DBMS_OUTPUT.PUT_LINE(l(i));
END LOOP;
DBMS_OUTPUT.PUT_LINE('-');
END;
/
Query OK, 0 rows affected
A
B
C
D
-
ネストテーブルと配列の基本的な構造は似ていますが、使用方法には以下の違いがあります。
配列は定義時に長さを指定する必要がありますが、ネストテーブルは不要であり、ネストテーブルは動的に拡張できます。
配列は連続しており、要素が削除されると配列のインデックスが移動します。ネストテーブルは初期化時に連続していますが、要素が削除されてもインデックスは移動せず、削除された空の要素はそのままスペースを占めます。