FNC_GetStructuredInputLobAttributeByNdx - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/rin1593638965306.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

外部ルーチンへの入力パラメータであると定義されているSTRUCTURED型のLOB属性のロケータを戻します。

構文規則

void
FNC_GetStructuredInputLobAttributeByNdx ( UDT_HANDLE   udtHandle,
                                          int           attributeIndex,
                                          int         *nullIndicator,
                                          LOB_LOCATOR *object )

構文要素

udtHandle
以下のいずれかとして定義されているSTRUCTURED型UDTへのハンドル。
  • 外部ルーチンへの入力パラメータ
  • 外部ルーチンへの入力パラメータとして定義されているSTRUCTURED型UDTの属性。
attributeIndex
UDT内のネストされていないLOB属性のインデックス。

値の範囲は0からi-1です。0はUDTの最初の属性のインデックスであり、iはUDTの最上位レベルの属性の数です。

例えば、次の2つの属性を持つ、passportUDTと呼ばれるSTRUCTURED型UDTがあるとします。最初の属性は、IDと呼ばれるINTEGER属性であり、2番目の属性はphotoと呼ばれるLOB属性です。photo属性のロケータを取得するには、インデックス1を使用します。

nullIndicator
属性がNULLかどうかを示す標識。
nullIndicatorの値
  • -1の場合、その属性はNULLです。

    これは、udtHandle引数がNULLであることを示す場合もあります。

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

使用上の注意

  • FNC_GetStructuredInputLobAttributeByNdxを使用すると、LOB型を表わすDISTINCT型属性のLOBロケータを取得することができます。
  • LOB属性のLOBロケータを取得した後、FNC_LobOpenなどのLOBアクセス関数を使用して、データを読み取ります。
  • 外部ルーチンへの入力パラメータであると定義されているSTRUCTURED型UDTの、ネストされたLOB属性のロケータを取得するには、以下の操作を行います。
    1. FNC_GetStructuredAttributeByNdxを呼び出して、ターゲット属性へのパス内の次のSTRUCTURED型UDT属性のUDTハンドルを取得します。

      このステップを繰り返し、udtHandle引数として新しく取得したUDTハンドルでnを-2回渡します。nは、ターゲット属性のネスト レベルです。

    2. FNC_GetStructuredInputLobAttributeByNdxを呼び出し、ターゲットLOB属性を含むSTRUCTURED型UDT属性のUDTハンドルで渡します。
  • CLIv2を使用してSQLを実行する外部ストアド プロシージャは、未処理のCLIv2リクエストが完了するまで、この関数を呼び出すことはできません。

FNC_GetStructuredInputLobAttributeByNdxの使用例

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 (first) attribute */
    FNC_GetStructuredInputLobAttributeByNdx(*documentUdt, 0,                                            &nullIndicator, &inDocLoc);    if (nullIndicator == -1) {
        /* the CLOB attribute is set to null if we don't append to it. */
        return;
    }
    ....
}