17.00 - 17.05 - ラージ オブジェクトの値へのアクセス - 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
日本語 (日本)
Teradataには、ラージ オブジェクトの値にアクセスするためのライブラリ関数として、次のものが用意されています。
  • FNC_LobOpen
  • FNC_LobRead
  • FNC_LobClose

ラージ オブジェクトの値にアクセスするには、次のようにします。

  1. FNC_LobOpenを呼び出して、ラージ オブジェクトのための読み取りコンテキストを確立します。

    FNC_LobOpenは、ラージ オブジェクトの読み取りコンテキスト ハンドルをLOB_CONTEXT_ID型の出力引数に入れて戻します。sqltypes_td.hヘッダー ファイルの中でLOB_CONTEXT_IDは、次のように定義されています。

    typedef long LOB_CONTEXT_ID;

  2. FNC_LobReadを呼び出してラージ オブジェクトを読み、データをBYTEバッファに入れます。

    FNC_LobReadの入力引数の1つは、FNC_LobOpenから戻された読み取りコンテキスト ハンドルです。

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