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
-
ネスト表と配列の基本構造は非常に似ていますが、使用方法には以下の違いがあります:
配列は定義時に長さを指定する必要がありますが、ネスト表は不要で、動的に拡張できます。
配列は連続しており、要素を削除すると配列のインデックスが移動します。ネスト表は初期化時には連続していますが、要素を削除してもインデックスは移動せず、削除された空の要素はそのままポジションを占め続けます。