この例では、memset()を呼び出して、新しいNullBitVectorのすべてのバイトを0に設定することで初期化します。このNullBitVectorは、phonenumbers_ary型のARRAY用に呼び出し側で事前に割り当てられています。この操作に必要な情報は、FNC_GetArrayTypeInfoを呼び出すことで取得します。その後で、FNC_SetNullBitVectorByElemIndexを呼び出して、1つのビットを「存在しない」に設定します。
ここに示す例は、次の2-D ARRAY定義を基にしています。
/* Oracle-compatible and Teradata syntax respectively: */ CREATE TYPE myArray AS VARRAY(1:20)(1:20) OF INTEGER; CREATE TYPE myArray AS INTEGER ARRAY[1:20][1:20]; void ArrayUDF ( ARRAY_HANDLE *a, char sqlstate[6]) { NullBitVecType *NullBitVector; array_info_t arrayInfo; long nullVecBufSize; int aryIndex[FNC_ARRAYMAXDIMENSIONS]; bounds_t arrayScope[FNC_ARRAYMAXDIMENSIONS]; /* Call FNC_GetArrayTypeInfo first to find out the number of */ /* elements in the array. */ FNC_GetArrayTypeInfo(*a, &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); /* Set one bit in NullBitVector to 1 (present) */ aryIndex[0] = 1; aryIndex[1] = 1; FNC_SetNullBitVectorByElemIndex(NullBitVector, aryIndex, 1, nullVecBufSize, arrayScope, arrayInfo.numDimensions); ... }