17.00 - 17.05 - DISTINCT型UDTの結果の値の設定 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

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および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);

    ...
}