ロケータが有効なのは、それが引数として渡されたUDFの実行期間中だけです。そのため、集約情報を累積するために集約関数が使用する中間集約記憶域にロケータを渡すことはできません。
集約関数では、ロケータを、SQLリクエストの実行の間有効な参照である永続オブジェクト参照に変換する必要があります。
sqltypes_td.hヘッダー ファイルでは、永続オブジェクト参照がLOB_REF型として次のように定義されています。
typedef struct LOB_REF{ unsigned char data[50]; } LOB_REF;
LOB_REFは、それが作成されたリクエストの外では無効です。テーブルに格納するなど、そのリクエスト外にLOB_REFを渡してから後でロケータに戻そうとすると、関数はエラーになります。
ロケータを、中間集約記憶域に渡すことのできる永続オブジェクト参照に変換したり、その逆に変換したりするため、Teradataでは次のライブラリ関数が用意されています。
- FNC_LobLoc2Ref
- FNC_LobRef2Loc
関連情報 | 参照先 |
---|---|
FNC_LobLoc2RefとFNC_LobRef2Locについての詳細な情報(関数の使用方法を示す例を含む) | Cライブラリ関数 |
LOBを使用する集約関数の完全な例 | LOBを使用したC集約関数 |