DISTINCT型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の結果として定義されるDISTINCT型UDTの値を設定するには、以下のようにします。

DISTINCT型 結果
LOBを表わすものでない場合
  1. DISTINCT型UDTの基礎となる型にマッピングされるCデータ型を使用してバッファを割り当てます。
  2. 戻り値をバッファに入れます。
  3. FNC_SetDistinctValueを呼び出すことによって、割り振ったバッファ内の戻り値をUDTの値として設定します。
LOBを表わす場合
  1. DISTINCT型のロケータを入れるためのLOB_RESULT_LOCATORを宣言します。
  2. FNC_GetDistinctResultLobを呼び出すことによって、そのLOB_RESULT_LOCATORを、DISTINCT型UDTのロケータに設定します。
  3. ラージ オブジェクト型結果へのデータの追加のステップを実行することにより、LOBロケータを使って戻りデータを付加します。

FNC_SetDistinctValue and FNC_GetDistinctResultLobの詳細は、Cライブラリ関数を参照してください。

FLOATを表わすDISTINCT型UDTの値を設定するコードの一部を以下に示します。

void meters_t_toFeet( UDT_HANDLE    *metersUdt,
                      UDT_HANDLE    *resultFeetUdt,
                      char           sqlstate[6])
{
    FLOAT value;
    int length;
    /* Get the value of metersUdt. */
    FNC_GetDistinctValue(*metersUdt, &value, SIZEOF_FLOAT, &length);
    /* Convert meters to feet and set the result value */
    value *= 3.28;
    FNC_SetDistinctValue(*resultFeetUdt, &value, SIZEOF_FLOAT);

    ...
}