🐥
【PL/SQL】索引付き表(メモ)
日常業務で索引付き表を作成する場面が多いので、定義について振り返ります。
索引付き表とは
PL/SQLで使用されるコレクションの一種で、他のプログラミング言語で言うところの連想配列に相当します。(バージョンによっては結合配列とも呼ばれます)
データを格納するための特別な形式のテーブルで、データがインデックスに格納されているため、検索やアクセスが迅速に行えます。
コレクションとは
同じデータ型の複数の値を受け取る変数をコレクションといいます。
レコードとは違い、要素と索引からなり、索引番号を使用して各要素にアクセスします。
索引付き表の定義
- 型の定義
- TABLE型を定義します。
TYPEキーワードを使用し、TABLE OFの後ろにTABLE型の要素のデータ型を指定します。 - INDEX BY句を使用して、配列のインデックスのデータ型を指定します。
INDEX BY句の後ろに指定したデータ型が索引のデータ型になります。
- TABLE型を定義します。
テーブル型の定義
TYPE<テーブル型> IS TABLE OF <データ型> [NOT NULL]
INDEX BY {
BINARY_INTEGER | PLS_INTEGER | <文字データ型> (<上限サイズ>)
};
プロとしてのOracle PL/SQL入門第3版
- 結合配列の定義
上記で定義したTABLE型と索引付き表名を対応付けます。索引付き表の定義<索引付き表名> <テーブル型名>;
プロとしてのOracle PL/SQL入門第3版
レコードの索引付き表
要素のデータ型にレコードを指定した索引付き表になります。
上記、索引付き表との違いは、TABLE OFのデータ型にレコード型を指定してること。
レコードとは
レコード型は名前をつけることができるデータのコンテナです。
レコード型を使用することで、複数のフィールドを持つデータを一つの変数として扱うことができます。
レコードの索引付き表の定義
TYPE<テーブル型> IS TABLE OF <レコード名>
INDEX BY {
BINARY_INTEGER | PLS_INTEGER | <文字データ型> (<上限サイズ>)
};
レコードにはユーザー定義レコードと%ROWTYPE属性の変数を使用できます。
プロとしてのOracle PL/SQL入門第3版
所感
ユーザー定義レコードを使用することで、複数の異なるデータ型を一つのレコードとしてまとめることができ、レコードの索引付き表の方が、実際の業務で使用することが多く感じます。
今回は、振り返りを兼ねて参考書をまとめたメモ的な感じでした。
実際の使用例については、また別の記事で振り返ろうと思います。
今後もPL/SQLの勉強を中心に進めていきたいのですが、なにかオススメな参考書等あればコメント頂けると幸いです。
Discussion