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); ... }