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スカラー関数を参照してください。