配列エレメントの指定
配列エレメント指定は、array-index で指定された配列のエレメントを戻します。
- 配列式
- 配列タイプの SQL 変数、SQL パラメーター、またはグローバル変数か、配列タイプへのパラメーター・マーカーの CAST 仕様を指定します。
- [array-index ]
- 配列から抽出するエレメントの添字を指定する式。 通常配列の添字の値は INTEGER にキャスト可能でなければなりません。 添字の値は、1 から、配列のカーディナリティーまででなければなりません。 連想配列の添字の値は、配列タイプの添字のデータ・タイプにキャスト可能でなければなりません。 添字の値は、配列に存在するエレメントを指していなければなりません。 添字の値が添字のデータ・タイプより長いストリングである場合、値は切り捨てられ、警告が出され、切り捨てられた値を使用して処理が続行されます。
array-index は、以下のものであってはなりません。
- CURRENT DATE、CURRENT TIME、または CURRENT TIMESTAMP 特殊レジスターを参照する式
- 非 deterministic 関数
- EXTERNAL ACTION を指定して定義された関数
- MODIFIES SQL DATA を指定して定義された関数
- シーケンス式
EBCDIC コード・ページでは、X'BBBB ' は通常、連結演算子として扱われます。 この文字シーケンスは、一部の EBCDIC コード・ページでは右大括弧文字 (']]') のペアであるため、配列指標式の内部で使用される場合は連結演算子として扱われません。
結果のデータ・タイプは、CREATE TYPE (配列) ステートメントの配列に指定されるデータ・タイプです。 array-index が NULL の場合、または配列が NULL の場合、NULL 値が戻されます。
配列エレメントが文字またはグラフィック・データである場合、結果の CCSID は、配列タイプの配列エレメントの CCSID になります。 配列エレメントが日時データである場合、結果の CCSID は 1208 です。
例
例 1: PHONE_NUMBERS が、配列タイプとして定義された配列変数だとします。 配列タイプは CHAR(10) エレメントの通常配列として定義されています。 また、INT_VAR が整変数であるとします。 以下の代入ステートメントは、配列エレメントの添字を指定する方法を示しています。
配列の最初のエレメントを NULL に設定します。
SET PHONE_NUMBERS[1] = NULL;
3 番目のエレメントに値「4164789683」を設定します。
SET PHONE_NUMBERS[3] = '4164789683';
配列エレメントに「4164788888」を設定し、添字を変数 INT_VAR で指定します。
SET PHONE_NUMBERS[INT_VAR] = '4164788888';
配列エレメントに「4164783322」を設定し、添字を式 INT_VAR+5 で指定します。
SET PHONE_NUMBERS[INT_VAR + 5] = ‘4164783322’;
