外部ルーチンへの入力パラメータであると定義されている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ではありません。
- -1の場合、その属性はNULLです。
- object
- LOB属性のLOBロケータを指すポインタ。
使用上の注意
- FNC_GetStructuredInputLobAttributeByNdxを使用すると、LOB型を表わすDISTINCT型属性のLOBロケータを取得することができます。
- LOB属性のLOBロケータを取得した後、FNC_LobOpenなどのLOBアクセス関数を使用して、データを読み取ります。
- 外部ルーチンへの入力パラメータであると定義されているSTRUCTURED型UDTの、ネストされたLOB属性のロケータを取得するには、以下の操作を行います。
- FNC_GetStructuredAttributeByNdxを呼び出して、ターゲット属性へのパス内の次のSTRUCTURED型UDT属性のUDTハンドルを取得します。
このステップを繰り返し、udtHandle引数として新しく取得したUDTハンドルでnを-2回渡します。nは、ターゲット属性のネスト レベルです。
- FNC_GetStructuredInputLobAttributeByNdxを呼び出し、ターゲットLOB属性を含むSTRUCTURED型UDT属性のUDTハンドルで渡します。
- FNC_GetStructuredAttributeByNdxを呼び出して、ターゲット属性へのパス内の次の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; } .... }