STRUCTURED型UDTの結果の属性値の設定 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/qwr1571437338192.ditamap
dita:ditavalPath
ja-JP/qwr1571437338192.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);

    ...
}