VARRAYは、以前のブログで説明したネストされたテーブルタイプコレクションの修正バージョンとして、1998年にOracle8iでリリースされました。
推奨読書:ネストされたテーブルを作成する方法–
- PL/SQLブロック要素として
- データベースオブジェクトとして
- ユーザー定義データ型の使用
また、テストを受けることで、主題に関する知識をテストできるようになりました。 ここ。
VARRAYは、一般的に認定試験で常に質問があることがわかっているため、重要なトピックです。混乱を最小限に抑えるために、最初にVARRAYコレクションの概要を簡単に見ていきます。
Variable Sized Arraysの頭字語であるVARRAYs ネストされたテーブルの変更された形式として、1998年にOracle8iで導入されました。主な変更点は、ストレージの向きで見ることができます。実装に目立った変更はありませんが、ネストされたテーブルとはストレージの向きが完全に異なります。
ストレージに外部テーブルを必要とするネストされたテーブルとは異なり、VARRAYは親レコードの生の値として親テーブルにインラインで格納されます。 これは、STOREAS句が不要になることを意味します。ああ、なんて安心だ。不要なIOがなく、それに加えてパフォーマンスが向上した。
VARRAYを保存して再利用できますか?
ネストされたテーブルと同様に、VARRAYは永続的なタイプのコレクションです。つまり、後で使用するために保存できるデータベースオブジェクトとして作成できます。 VARRAYは、PL/SQLブロックのメンバーとして作成することもできます。 PL / SQLブロック内で宣言されるVARRAYの範囲は、それが作成されたブロックに限定されます。
VARRAYは制限されていますか、それとも制限されていませんか?
ネストされたテーブルとは異なり、VARRAYは制限付きのコレクション形式です。制限付きとは、コレクションを宣言するときに、コレクションに保存する要素の数を決定する必要があるということです。一方、無制限タイプのコレクションであるネストされたテーブルでは、要素数に上限はありません。
VARRAYのストレージメカニズム
VARRAYのストレージメカニズムは最大の違いであり、ネストされたテーブルよりも優れた選択肢になります。ストレージに外部テーブルを必要とするネストされたテーブルとは異なり、VARRAYは、親レコードの生の値として親テーブルにインラインで格納されます。 これは、STOREAS句や個別のストレージテーブルの要件がないことを意味します。
VARRAYのインラインストレージは、ディスクの入力/出力(I / O)を削減するのに役立ち、ネストされたテーブルよりもVARRAYのパフォーマンスを向上させます。ただし、VARRAYが4Kデータを超えると、Oracleはアウトオブラインストレージメカニズムに従い、VARRAYをLOBとして格納します。
PL/SQLVARRAYを作成するための構文
このセクションでは、VARRAYを作成するための構文を次のように示します
- データベースオブジェクトと
- PL/SQLブロックのメンバー。
私のYouTubeチャンネルで、これらの構文の両方を詳細に説明した同じトピックのビデオにアクセスできます。
データベースオブジェクトとしてのVARRAY
CREATE [OR REPLACE] TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
PL/SQLブロックのメンバーとしてのVARRAY
DECLARE TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
上記の構文は両方ともネストされたテーブルと同じですが、ここにSize_Limitという追加の句があります。サイズ制限は、VARRAYが保持できる要素の最大数を示す整数です。
ネストされた表と同様に、PL/SQLブロックの宣言セクションでのみVARRAYを宣言できることを常に覚えておいてください。
VARRAYタイプコレクションのサイズ制限を変更するにはどうすればよいですか?
VARRAYのサイズ制限は、ALTERTYPEDDLステートメントを使用して変更できます。
ALTER TYPE type_name MODIFY LIMIT new-size-limit [INVALIDATE | CASCADE]
場所:
代替タイプ 実行するDDLアクションをコンパイラーに示す予約済みのフレーズです。
タイプ名 変更するタイプの名前です。
制限の変更 は、ユーザーがサイズ制限を変更することをコンパイラーに通知する句です。
NEW-SIZE-LIMIT VARRAYの新しいサイズ制限となる整数です。
無効 節 は、チェックメカニズムなしですべての依存オブジェクトを無効にするオプションの句です。
CASCADE句 ここでも、依存型とテーブルに変更を伝播するオプションの句です。
VARRAYタイプのコレクションを削除するにはどうすればよいですか?
VARRAYタイプを削除するには、DROPDDLステートメントの助けを借りることができます。
DROP TYPE type_name [FORCE];
場所:
ドロップタイプ
データベースで作成された任意のタイプを削除できるDDLステートメントです。
タイプ名
タイプ名は、削除する作成済みのタイプの名前です。
強制
依存データベースオブジェクトがある場合でもタイプを削除するには、FORCEを指定します。 Oracle Databaseは、削除するタイプに応じてすべての列を未使用としてマークし、それらの列にアクセスできなくなります。この操作は回復不能であり、依存するテーブルまたは列のデータにアクセスできなくなる可能性があることに注意してください。
あなたが何か新しいことを学んだことを願っています。これで、ここでテストを受けることにより、主題に関する知識をテストできます。あなたのソーシャルでこのブログを共有することによって成長するのを手伝ってください。このようにして、友達の学習を助けることもできます。ありがとう&素晴らしい一日を!