両方の基本的な違いと使用法を知っています。しかし、私が答えとして探しているのは、なぜ VARRAY が導入されたのかということです。
したがって、NESTED TABLE を使用して VARRAY を使用して実行できることと同じことを実行できますが、その逆はシナリオによっては不可能です。また、人々が VARRAY store elements in-line に言及している場所に気付きました。どういう意味ですか ?両方の内部ストレージと処理を説明できる人はいますか?
両方の基本的な違いと使用法を知っています。しかし、私が答えとして探しているのは、なぜ VARRAY が導入されたのかということです。
したがって、NESTED TABLE を使用して VARRAY を使用して実行できることと同じことを実行できますが、その逆はシナリオによっては不可能です。また、人々が VARRAY store elements in-line に言及している場所に気付きました。どういう意味ですか ?両方の内部ストレージと処理を説明できる人はいますか?
要約すると、次の場合にVARRAYとも呼ばれる可変サイズ配列を使用します。
たとえば、VARRAY は次のように宣言されます。
TYPE varray_emp IS VARRAY(14) OF emp%ROWTYPE;
emp_rec varray_emp;
したがって、UPPER BOUND が固定されていることがわかります。上記の例では 14 です。
詳細については、ドキュメントを参照してください。
データベースへの VARRAY の格納に関する更新
上記のドキュメント リンクからの引用:
各 VARRAY は、単一のオブジェクトとして、それが列である表の内部 (VARRAY が 4KB 未満の場合) または表の外部で同じ表領域内 (VARRAY が 4KB を超える場合) に格納されます。varray のすべての要素を同時に更新または取得する必要があります。これは、すべての要素に対して何らかの操作を一度に実行する場合に最も適しています。ただし、この方法で多数の要素を格納および取得するのは実際的ではない場合があります。
インライン保管について:
VARRAY は通常、行に格納されます。つまり、その行の他のデータと同じ表領域に格納されます。十分に大きい場合、Oracle はそれを BLOB として格納します。
b/w ネストした表と VARRAY の違い:
親表の表スペース以外のネストされた表に対して、別個の表スペースが作成されます。VARRAY サイズが 4 KB 未満の場合は、それが列である表の内部に格納されます。それ以外の場合は、表の外部で同じ表スペースに格納されます。
ネストした表の個々の要素に対して更新、削除が可能です。
Varray 内の個々の要素に対して更新および削除を実行することはできません。詳細については、以下のリンクを参照してください。 http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/05_colls.htm