Teradataには、ラージ オブジェクトの値にアクセスするためのライブラリ関数として、次のものが用意されています。
- FNC_LobOpen
- FNC_LobRead
- FNC_LobClose
ラージ オブジェクトの値にアクセスするには、次のようにします。
- FNC_LobOpenを呼び出して、ラージ オブジェクトのための読み取りコンテキストを確立します。
FNC_LobOpenは、ラージ オブジェクトの読み取りコンテキスト ハンドルをLOB_CONTEXT_ID型の出力引数に入れて戻します。sqltypes_td.hヘッダー ファイルの中でLOB_CONTEXT_IDは、次のように定義されています。
typedef long LOB_CONTEXT_ID;
- FNC_LobReadを呼び出してラージ オブジェクトを読み、データをBYTEバッファに入れます。
FNC_LobReadの入力引数の1つは、FNC_LobOpenから戻された読み取りコンテキスト ハンドルです。
- FNC_Closeを呼び出して、読み取りコンテキストに関連するすべてのリソースを解放します。
各関数の詳細については、Cライブラリ関数を参照してください。
ラージ オブジェクトの値のアクセス方法を示すコードの一部を、以下に示します。
#define BUFFER_SIZE 500
void do_something ( LOB_LOCATOR *a,
LOB_RESULT_LOCATOR *result,
char sqlstate[6] )
{
BYTE buffer[BUFFER_SIZE];
FNC_LobLength_t actlen;
LOB_CONTEXT_ID id;
/* Establish a read context for the LOB input argument */
FNC_LobOpen(*a, &id, 0, BUFFER_SIZE);
/* Read the LOB and place the data into a BYTE buffer */
FNC_LobRead(id, buffer, BUFFER_SIZE, &actlen);
/* Release the resources associated with the read context */
FNC_LobClose(id);
...
}
完全な例については、LOBを使用するCスカラー関数を参照してください。