6 PL/SQLのコレクションとレコード
PL/SQLでは、コレクションとレコードという、2種類のコンポジット・データ型を定義できます。
コンポジット・データ型には、内部コンポーネントを持つ値が格納されます。コンポジット変数全体をサブプログラムにパラメータとして渡すことや、コンポジット変数の内部コンポーネントに個別にアクセスすることができます。内部コンポーネントは、スカラーまたはコンポジットのいずれかです。スカラー・コンポーネントは、スカラー変数を使用できるすべての場所で使用できます。コンポジット・コンポーネントは、同じ型のコンポジット変数を使用できるすべての場所で使用できます。
ノート:
コンポジット変数をパラメータとしてリモート・サブプログラムに渡した場合、冗長なループバックDATABASE
LINK
を作成する必要がありますが、これにより、リモート・サブプログラムがコンパイルされたときに、ソースを検証するタイプ・チェッカが、実行者の使用しているものと同じユーザー定義のコンポジット変数型定義を使用するようになります。
collectionの内部コンポーネントは、常に同じデータ型であり、要素と呼ばれます。コレクション変数の各要素には、このvariable_name
(
index
)
という構文を使用して、その一意の索引によってアクセスできます。コレクション変数を作成するには、コレクション型を定義してからその型の変数を作成するか、%TYPE
を使用します。
レコードの内部コンポーネントは、データ型が異なる場合があり、フィールドと呼ばれます。レコード変数の各フィールドには、variable_name.field_name
という構文を使用して、その名前によってアクセスできます。レコード変数を作成するには、RECORD
型を定義してからその型の変数を作成するか、%ROWTYPE
または%TYPE
を使用します。
レコードのコレクション、およびコレクションを含むレコードを作成できます。
コレクションに関するトピック
関連項目:
-
CREATE
DATABASE
LINK
文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください -
コレクションへの問合せ結果の取出しの詳細は、「BULK COLLECT句」を参照してください
-
コレクション型の定義およびコレクション変数の宣言の構文とセマンティクスは、「コレクション変数の宣言」を参照してください
レコードに関するトピック
ノート:
明示的にリストされたコンポジット・データ構造のコンポーネント(コレクション・コンストラクタまたはレコード・イニシャライザなど)はどの順序でも評価できます。プログラムにより評価の順序が決定される場合は、プログラムで決定が行われる時点で動作は定義されません。