目的
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ではありません。
- -1の場合、その属性はNULLです。
- LOB_LOCATOR *object
- LOB属性のLOBロケータを指すポインタ。
使用上の注意
FNC_GetStructuredInputLobAttributeを使用すると、LOB型を表わすDISTINCT型属性のLOBロケータを取得することができます。
LOB属性のLOBロケータを取得した後、FNC_LobOpenなどのLOBアクセス関数を使用して、データを読み取ります。
データがLOBに保存されているJSON属性のデータを読み込むには、以下の操作を実行します。
- FNC_GetStructuredAttributeInfo_EONを呼び出します。
- 前の関数呼び出しから返されたlob_lengthが0の場合、FNC_GetStructuredInputLobAttributeの代わりにFNC_GetStructuredAttributeを使用する必要があります。
- 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; } .... }