EXTENDは、可変配列またはネスト表の末尾に要素を追加するために使用されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
コレクションは空にすることはできますが、NULLにすることはできません。コンストラクタを使用して、コレクションを空にしたり、NULLコレクションに要素を追加したりできます。詳細については、コレクションコンストラクタを参照してください。
EXTENDメソッドの使い方は以下のとおりです:
EXTENDは、コレクションにNULL要素を追加します。EXTEND(n)は、コレクションにn個のNULL要素を追加します。EXTEND(n,i)は、i番目の要素のn個のコピーをコレクションに追加します。説明
EXTEND(n,i)のみ、NOT NULL制約を持つ要素のコレクションに使用できます。
EXTENDは、コレクションの内部サイズに基づいて操作を行います。つまり、DELETEで要素を削除してもその場所にプレースホルダーが残っている場合、EXTENDはその要素が存在すると認識します。
例:
obclient> DECLARE
t nested_type:= nested_type('A', 'B', 'C');
BEGIN
print_t(t);
t.EXTEND(2,1); -- コレクションに最初の要素の2つのコピーを追加
print_t(t);
t.DELETE(4); -- 4番目の要素を削除
print_t(t);
t.EXTEND; -- コレクションにNULL要素を追加
print_t(t);
END;
/
Query OK, 0 rows affected
t.(1) = A
t.(2) = B
t.(3) = C
---
t.(1) = A
t.(2) = B
t.(3) = C
t.(4) = A
t.(5) = A
---
t.(1) = A
t.(2) = B
t.(3) = C
t.(5) = A
---
t.(1) = A
t.(2) = B
t.(3) = C
t.(5) = A
t.(6) = NULL
---
上記の例では、ネスト表変数を宣言し、3つの要素を初期化して代入します。それぞれ以下の操作を実行します:
コレクションに最初の要素の2つのコピーを追加します。
4番目の要素を削除します。
コレクションにNULL要素を追加します。
print_ntストアドプロシージャは、初期化後およびEXTENDとDELETE操作後にネスト表変数を出力します。