この例では、FNC_GetArrayElementsを呼び出した後で、FNC_CheckNullBitVectorByElemIndexを呼び出して、phonenumbers_ary型のARRAYに対応するNullBitVectorの構成要素1の値を検査しています。
void ArrayUDF ( ARRAY_HANDLE *ary_handle,
char sqlstate[6])
{
NullBitVecType *NullBitVector;
array_info_t arrayInfo;
long nullVecBufSize;
int presenceBit;
bounds_t *arrayRange;
int arrayIndex[FNC_ARRAYMAXDIMENSIONS];
bounds_t arrayScope[FNC_ARRAYMAXDIMENSIONS];
/* Call FNC_GetArrayTypeInfo first to find out the number of */
/* elements in the array. */
FNC_GetArrayTypeInfo(*ary_handle,
&arrayInfo,
arrayScope);
(arrayInfo.totalNumElements % 8 == 0) ?
(nullVecBufSize = arrayInfo.totalNumElements / 8) :
(nullVecBufSize = arrayInfo.totalNumElements / 8) + 1;
/* Allocate a new NullBitVector array. */
NullBitVector = (NullBitVecType*)FNC_malloc(nullVecBufSize);
/* Initialize the NullBitVector to default values. */
memset(NullBitVector, 0, nullVecBufSize);
arrayRange =
(bounds_t*)FNC_malloc(sizeof(bounds_t)*arrayInfo.numDimensions);
/* Set values of arrayRange to correspond to the range [1:2][1:2] */
arrayRange[0].lowerBound = 1;
arrayRange[0].upperBound = 2;
arrayRange[1].lowerBound = 1;
arrayRange[1].upperBound = 2;
/* Get elements within the range [1:2][1:2] of myArray. */
FNC_GetArrayElements(*ary_handle, arrayRange, &result, buffer,
NullBitVector, &length);
/* Check the presence bit for element 1 of phonenumbers_ary. */
arrayIndex[0] = 1;
presenceBit = FNC_CheckNullBitVectorByElemIndex(NullBitVector,
arrayIndex, nullVecBufSize, arrayScope, arrayInfo.numDimensions);
...
}