void
FNC_GetArrayElements ( ARRAY_HANDLE aryHandle,
bounds_t *arrayInterval,
void *returnValue,
long returnValueBufSize,
NullBitVecType *nullBitVec,
long nullBitVecBufSize,
long *length )
- ARRAY_HANDLE aryHandle
- 外部ルーチンへの入力パラメータとして定義されたARRAY型へのハンドル。
- bounds_t *arrayInterval
- bounds_t構造体の配列。この配列では、取得するARRAY構成要素のセットへのインデックスを指定します。
- 1-D ARRAYの場合、構成要素のセットへのインデックスは、arrayInterval配列の最初のセルで指定します。このARRAY型がn-Dの場合、2番目以降の次元情報は必要に応じてセル2から5に格納されます。
- bounds_t構造体は、sqltypes_td.hで次のように定義されています。
typedef struct bounds_t {
int lowerBound;
int upperBound;
} bounds_t;
- lowerBoundの値では、特定の次元内で取得する最初の値を指定し、upperBoundの値では、特定の次元内で取得する最後の値を指定します。
- この構成要素の範囲は、1-D ARRAYに対しては連続的にする必要があります。また、n-D ARRAYに対しては構成要素のスライスまたは矩形範囲にする必要があります。各次元の境界値(下限と上限)は、そのARRAY型に定義された範囲内にする必要があります。
- void *returnValue
- FNC_GetArrayElementsで構成要素の値を返すために使用するバッファへのポインタ。行優先順のarrayIntervalで指定した、適切な範囲の構成要素が返されます。
- 返される構成要素ごとに、returnValueバッファには次の情報が格納されます。
- 先頭の4バイトでは、データのサイズが示されます。これは、可変長の構成要素データ型の場合にのみ該当します。
- 各構成要素に割り当てられる残りのバイトは、構成要素データ型の最大サイズを保持できるように割り当てます。この領域には、構成要素の実際の値が格納されます。
- そのため、構成要素ごとに次の領域が割り当てられることになります。
- 可変長の構成要素データ型の場合は、(MAX_SIZE_OF_ELEMENT_DATA_TYPE + 4バイト)。
- 固定長のデータ型の場合は、(MAX_SIZE_OF_ELEMENT_DATA_TYPE)。
- long returnValueBufSize
- returnValue引数に割り当てられたバイト単位のサイズ。
- NullBitVecType *nullBitVec
- NullBitVector配列へのポインタ。この配列は、事前に呼び出し側で割り当てます。要求された構成要素の範囲ごとに、nullBitVecの該当するビットが次のように設定されます。
- 構成要素が存在し、NULLではない場合は1。
- 構成要素が存在し、NULLに設定されている場合は0。
- long nullBitVecBufSize
- 呼び出し側で割り当てたNullBitVectorのサイズ。呼び出し側ではNullBitVectorの割り当て後に、すべてのビットを0に設定することで初期化します。
- このパラメータは、FNC_GetArrayElementsの保護モードでの実行に必要になります。
- long *length
- FNC_GetArrayElementsがreturnValueで返す値のサイズ(バイト単位)。
- 文字データ型の場合、NULL終了文字があればそのサイズも長さに含まれます。