17.00 - 17.05 - FNC_LobRef2Locの使用例 - 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
日本語 (日本)
#define BUFFER_SIZE 10000

/* Aggregate intermediate record */
typedef struct
{
   FNC_LobLength_t length;
   LOB_REF         ref;
   BYTE            prefix[500];
} intrec_t;

void Max_Blob(FNC_Phase          phase,
              FNC_Context_t      *fctx,
              LOB_LOCATOR        *x,
              LOB_RESULT_LOCATOR *result,
              int                *x_i,
              int                *result_i,
              char               sqlstate[6])
{
   intrec_t        *s1 = (intrec_t*) fctx->interim1;
   LOB_CONTEXT_ID  id;
   FNC_LobLength_t actlen;

   switch (phase)
   {
   case AGR_INIT:

      ...

   case AGR_DETAIL:

      ...

      break;
   case AGR_FINAL:
     FNC_LobOpen(*(FNC_LobRef2Loc(&s1->ref)), &id, 0, 0); 
      FNC_LobRead(id, buffer, BUFFER_SIZE, &actlen);
      FNC_LobAppend(*result, buffer, actlen, &actlen);
      FNC_LobClose(id);
      break;

   ...

}

FNC_LobRef2Locを使用する完全な例については、LOBを使用したC集約関数を参照してください。