FNC_LobRef2Locの使用例 - Teradata Database - Teradata Vantage NewSQL Engine

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/uhh1512082756414.ditamap
dita:ditavalPath
ja-JP/uhh1512082756414.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage
#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集約関数を参照してください。