17.00 - 17.05 - LOBデータを中間集約記憶域に渡す - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

ロケータが有効なのは、それが引数として渡された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集約関数