配列コンストラクター

配列コンストラクターは、有効なコンテキスト内での配列データ・タイプ値の定義および構成に使用できる言語エレメントです。

構文

構文図を読むビジュアル構文図をスキップARRAY[ WITH,common-table-expression全選択,element-expressionNULL ]

許可

SQL ステートメント内の配列コンストラクターを参照するのに、特別な権限は必要ありません。ただし、ステートメントの実行を成功させるには、そのステートメントに必要なすべての権限を持っている必要があります。

説明

WITH 共通表式 (common-table-expression)
後続の全選択で使用する共通表式を定義します。
全選択
1 つの列を返す全選択。 各行に対して全選択によって戻される値は、配列のエレメントです。 配列のカーディナリティーは、全選択によって戻される行数と同じです。 fullselect に order-by-clause が組み込まれている場合は、この順序は配列のエレメントに行値が割り当てられる順序を決定します。 order-by-clause を指定しない場合は、行値が配列のエレメントに割り当てられる順序に決定性はありません。
エレメント式
配列内のエレメントの値を定義する式。 配列のカーディナリティーは、エレメント式の数と同じです。 最初の element-expression は、配列指標 1 を持つ配列エレメントに割り当てられます。 2 番目の element-expression は、配列指標 2 を持つ配列エレメントに割り当てられ、それ以降も同様になります。 すべての element-expression には、他のすべての element-expression と互換性のあるデータ・タイプがなければならず、配列の基本タイプは「結果データ・タイプの規則」のトピックで説明されている規則を使用して決定されます。
ヌル
NULL 値を指定します。

大括弧の中に値を指定しない場合の結果は、空の配列です。

ルール

  • element-expression または fullselect から派生する array-constructor の基本タイプは、ターゲット配列の基本タイプに割り当て可能でなければなりません (SQLSTATE 42821)。
  • array-constructor 内のエレメントの数は、ターゲット配列変数の最大カーディナリティー以下でなければなりません (SQLSTATE 2202F)。

  • 配列コンストラクターを使用すると、行タイプでないエレメントのある通常配列のみ定義できます。 配列コンストラクターを使用して、行タイプのエレメントがある連想配列や通常配列を定義することはできません。 この種の配列は、個々のエレメントを割り当てることによってのみ構成できます。

例 1: 配列変数 配列タイプの RECENT_CALLS PHONENUMBERS を固定数の配列に設定します。
   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]