UDFの結果として定義されるSTRUCTURED型UDTの属性値を設定するには、以下のようにします。
| 属性 | 結果 |
|---|---|
| LOBを表わすものでない場合 | その属性の基礎となる型にマッピングされるCデータ型を使用してバッファを割り当てます。 属性の値をバッファに入れます。 FNC_SetStructuredAttributeまたはFNC_SetStructuredAttributeByNdxを呼び出すことによって、割り振ったバッファ内の戻り値を属性の値として設定します。 属性をNULLに設定することもできます。 |
| LOBを表わす場合 | そのLOB属性のロケータを入れるためのLOB_RESULT_LOCATORを宣言します。 FNC_GetStructuredResultLobAttributeまたはFNC_GetStructuredResultLobAttributeByNdxを呼び出すことによって、そのLOB_RESULT_LOCATORを、LOB属性のロケータに設定します。 ラージ オブジェクト型結果へのデータの追加のステップを実行することにより、LOBロケータを使って戻りデータを付加します。 |
FNC_SetStructuredAttribute、FNC_SetStructuredAttributeByNdx、FNC_GetStructuredResultLobAttribute、およびFNC_GetStructuredResultLobAttributeByNdxの詳細については、Cライブラリ関数を参照してください。
STRUCTURED型UDTの属性値を設定するコードの一部を以下に示します。
void setX( UDT_HANDLE *pointUdt,
INTEGER *val,
UDT_HANDLE *resultPoint,
char sqlstate[6])
{
INTEGER x;
INTEGER newval;
int nullIndicator;
int length;
/* Set the x attribute of the result point. */
nullIndicator = 0;
newval = *val;
FNC_SetStructuredAttribute(*resultPoint, "x", &newval,
nullIndicator, SIZEOF_INTEGER);
...
}