EXTENDは、可変配列またはネストされたテーブルの末尾に要素を追加するために使用します。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
コレクションは空にすることはできますが、NULLにすることはできません。コンストラクターを使用して、コレクションを空にしたり、NULLコレクションに要素を追加したりできます。詳細については、コレクションのコンストラクターを参照してください。
EXTENDメソッドの使用方法は以下のとおりです:
EXTENDは、コレクションにNULL要素を追加します。EXTEND(n)は、コレクションにn個のNULL要素を追加します。EXTEND(n,i)は、i番目の要素のn個のコピーをコレクションに追加します。説明
NOT NULL制約を持つ要素のコレクションには、EXTEND(n,i)のみを使用できます。
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 操作後にネストされたテーブル変数を出力します。