配列コンストラクター
配列コンストラクターは、有効なコンテキスト内での配列データ・タイプ値の定義および構成に使用できる言語エレメントです。
構文
許可
SQL ステートメント内の配列コンストラクターを参照するのに、特別な権限は必要ありません。ただし、ステートメントの実行を成功させるには、そのステートメントに必要なすべての権限を持っている必要があります。
説明
- WITH common-table-expression
- 後続の全選択で使用する共通表式を定義します。
- fullselect
- 1 つの列を返す全選択。各行に対して全選択によって戻される値は、配列のエレメントです。 配列のカーディナリティーは、全選択によって戻される行数と同じです。 fullselect に order-by-clause が組み込まれている場合は、この順序は配列のエレメントに行値が割り当てられる順序を決定します。order-by-clause を指定しない場合は、行値が配列のエレメントに割り当てられる順序に決定性はありません。
- element-expression
- 配列内のエレメントの値を定義する式。 配列のカーディナリティーは、エレメント式の数と同じです。 最初の element-expression は配列指標 1 を持つ配列エレメントに割り当てられます。2 番目の element-expression は配列指標 2 を持つ配列エレメントに割り当てられ、それ以降も同様になります。 すべての element-expression に、他のすべての element-expression と互換性のあるデータ・タイプがなければならず、配列の基本タイプが「結果データ・タイプの規則」トピックを使用して決定されます。
- NULL
- NULL 値を指定します。
大括弧の中に値を指定しない場合の結果は、空の配列です。
規則
- element-expression または fullselect から派生する array-constructor の基本タイプは、ターゲット配列の基本タイプに割り当て可能でなければなりません (SQLSTATE 42821)。
- array-constructor 内のエレメントの数は、ターゲット配列変数の最大カーディナリティー以下でなければなりません (SQLSTATE 2202F)。
注
- 配列コンストラクターを使用すると、行タイプでないエレメントのある通常配列のみ定義できます。配列コンストラクターを使用して、行タイプのエレメントがある連想配列や通常配列を定義することはできません。この種の配列は、個々のエレメントを割り当てることによってのみ構成できます。
例
例 1: 配列タイプ
PHONENUMBERS の配列変数 RECENT_CALLS を固定番号の配列に設定します。 SET RECENT_CALLS = ARRAY[9055553907, 4165554213, 4085553678]例 2: 配列タイプ
PHONENUMBERS の配列変数 DEPT_PHONES を、DEPARTMENT_INFO 表から取得される電話番号の配列に設定します。 SET DEPT_PHONES = ARRAY[SELECT DECIMAL(AREA_CODE CONCAT '555' CONCAT EXTENSION,16)
FROM DEPARTMENT_INFO
WHERE DEPTID = 624]