FNC_GetStructuredInputLobAttribute - 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、UDM、または外部ストアド プロシージャへの入力パラメータであると定義されている、STRUCTURED型のLOB属性のロケータの値を戻します。

最良のパフォーマンスを得るには、このルーチンではなく、FNC_GetStructuredInputLobAttributeByNdxを使用してください。このルーチンは使いやすさのためにサポートされています。

構文

void
FNC_GetStructuredInputLobAttribute ( UDT_HANDLE   udtHandle,
                                     char        *attributePath,
                                     int         *nullIndicator,
                                     LOB_LOCATOR *object )
UDT_HANDLE udtHandle
UDF、UDM、または外部ストアド プロシージャへの入力パラメータであると定義されているSTRUCTURED型UDTへのハンドル。
char *attributePath
LOB属性に至る絶対パス(ピリオドを区切りとする)。
例えば、PersonUDTというSTRUCTURED型UDTがあり、それにはPassportUDT型のpassportという属性があり、その属性にはphotoというLOB属性があるとします。photo属性のロケータを取得するための絶対パスは、「passport.photo」です。
int *nullIndicator
属性がNULLかどうかを示す標識。
nullIndicatorの値
  • -1の場合、その属性はNULLです。

    値が-1なら、指定した属性への絶対パスのうち、それより前の部分にNULL属性が含まれている可能性もあります。

  • 0の場合、その属性はNULLではありません。
LOB_LOCATOR *object
LOB属性のLOBロケータを指すポインタ。

使用上の注意

FNC_GetStructuredInputLobAttributeを使用すると、LOB型を表わすDISTINCT型属性のLOBロケータを取得することができます。

LOB属性のLOBロケータを取得した後、FNC_LobOpenなどのLOBアクセス関数を使用して、データを読み取ります。

データがLOBに保存されているJSON属性のデータを読み込むには、以下の操作を実行します。

  1. FNC_GetStructuredAttributeInfo_EONを呼び出します。
  2. 前の関数呼び出しから返されたlob_lengthが0の場合、FNC_GetStructuredInputLobAttributeの代わりにFNC_GetStructuredAttributeを使用する必要があります。
  3. lob_lengthが0でない場合、FNC_GetStructuredInputLobAttributeを使用して、JSON属性のデータが保存されているLOBを表わすLOB_LOCATORを取得します。このLOB_LOCATORをLOB FNCルーチンと共に使用して、JSON属性からデータを読み込むことができます。

制限

CLIv2を使用してSQLを実行する外部ストアド プロシージャは、未処理のCLIv2リクエストが完了するまで、この関数を呼び出すことはできません。

FNC_GetStructuredInputLobAttributeの使用例

void document_t_lowerCase( UDT_HANDLE *documentUdt,
                           UDT_HANDLE *resultDocumentUdt,
                           char        sqlstate[6])
{
    LOB_LOCATOR inDocLoc;
    int nullIndicator;

    /* Get a LOB_LOCATOR for the input doc attribute */
    FNC_GetStructuredInputLobAttribute(*documentUdt, "doc",                                        &nullIndicator, &inDocLoc);    if (nullIndicator == -1) {
        /* the CLOB attribute is set to null if we don't append to it. */
        return;
    }
    ....
}