STRUCTURED型UDTの結果の属性値の設定 - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL外部ルーチン プログラミング

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/uhh1512082756414.ditamap
dita:ditavalPath
ja-JP/uhh1512082756414.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

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

    ...
}