目的
呼び出し側で事前に割り当てられたNullBitVector内の1つのビット、またはすべてのビットを設定します。
構文
void FNC_SetNullBitVector ( NullBitVecType *NullBitVector, int indexValue, int presenceValue, long bufSize)
- NullBitVecType *NullBitVector
- NullBitVectorの配列。この配列は、呼び出し側で事前に割り当てられます。
- int indexValue
- 整数値。次のいずれかの値を設定します。
- 単一のビットを変更する(indexValue ≥ 0、ARRAYの行優先順で指定します)。
- -1は、NullBitVectorのすべてのビットを変更することを意味します。
- int presenceValue
- 設定するプレゼンス ビット(indexValueで指定)の値。indexValueが-1の場合は、NullBitVectorのすべてのビットがpresenceValueの値に変更されます。有効な値は1または0です。
- long bufSize
- 呼び出し側で割り当てられたNullBitVectorのサイズ(バイト単位)。呼び出し側は割り当て後に、すべてのバイトを0に設定することでNullBitVectorを初期化します。
使用上の注意
FNC_SetNullBitVectorは、入力としてNullBitVector、indexValue、presenceValue、およびbufSizeを受け取り、NullBitVectorの個別のビットまたはすべてのビットにプレゼンス ビットを設定します。この関数を呼び出して、次のいずれかの操作を実行します。
目的 | indexValueに設定する値 | presenceValueに設定する値 |
---|---|---|
1つのビットをPRESENTに設定する | 変更するビット | 1 |
すべてのビットをPRESENTに設定する | -1 | 1 |
1つのビットをNOT PRESENTに設定する | 変更するビット | 0 |
すべてのビットをNOT PRESENTに設定する | -1 | 0 |
NullBitVectorの使用方法についての詳細は、NullBitVectorの検査と設定を参照してください。
FNC_SetNullBitVectorの使用例
この例では、FNC_GetArrayTypeInfoを呼び出してARRAYの必要な情報を取得してから、新しいベクタを割り当てます。その後で、FNC_SetNullBitVectorを呼び出して、すべてのビットを「存在しない」に設定します。
void ArrayUDF ( ARRAY_HANDLE *ary_handle, char sqlstate[6]) { NullBitVecType *NullBitVector; array_info_t arrayInfo; long nullVecBufSize; 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); /* Set all bits in NullBitVector to 0 (not present) */ FNC_SetNullBitVector(NullBitVector, -1, 0, nullVecBufSize); ... }