コレクションは、同じデータ型を持つ順序付けられたデータ項目のセットです。 一般に、データ項目はスカラーフィールドであるが、ユーザ定義型の各フィールドを構成する構造およびデータ型がセット内の各要素について同じである限り、レコード型またはオブジェクト型などのユーザ定義型であってもよい。 セット内の各特定のデータ項目は、一対の括弧内の下付き表記を使用することによって参照される。
マルチレベルコレクション (つまり、コレクションのデータ項目が別のコレクションである場合) はサポートされません。
コレクションの最も一般的に知られているタイプは配列です。 PolarDB for PostgreSQL (Oracleと互換) では、サポートされるコレクション型は、連想配列 (以前はOracleではindex-by-tablesと呼ばれていました) 、ネストされたテーブル、およびvarrayです。
コレクションを使用する一般的な手順は次のとおりです。
目的の型のコレクションを定義する必要があります。 これは、SPLプログラムの宣言トピックで実行できます。これにより、そのプログラム内でのみアクセス可能なローカル型が得られます。 ネストされたテーブル型とvarray型の場合、これはCREATETYPEステートメントを使用して実行することもできます。これにより、データベース内の任意のSPLプログラムが参照できる永続的なスタンドアロン型が作成されます。
コレクション型の変数が宣言されます。 変数宣言の一部として値の割り当てが行われない場合、宣言された変数に関連付けられたコレクションは、この時点で初期化されていないと言われます。
ネストされたテーブルとvarraysの初期化されていないコレクションはnullです。 nullコレクションはまだ存在しません。 通常、nullコレクションでコレクションメソッドが呼び出されると、COLLECTION_IS_NULL例外がスローされます。
連想配列の初期化されていないコレクションは存在しますが、要素はありません。 要素のない既存のコレクションは、空のコレクションと呼ばれます。
nullコレクションを初期化するには、空のコレクションにするか、null以外の値を割り当てる必要があります。 通常、nullコレクションはコンストラクターを使用して初期化されます。
空の連想配列に要素を追加するには、そのキーに値を割り当てるだけです。 ネストされたテーブルとvarrayの場合、通常、そのコンストラクターを使用して、ネストされたテーブルまたはvarrayに初期値を割り当てます。 ネストされたテーブルとvarrayの場合、EXTENDメソッドを使用して、コンストラクターによって設定された初期サイズを超えてコレクションを拡張します。
各コレクションタイプの具体的なプロセスについては、次のトピックで説明します。