例 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/rin1593638965306.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

次に示すコードの抜粋部分は、FNC_GetAnyTypeParamInfo関数を呼び出して、TD_ANYTYPE引数についての情報を取得する外部ストアド プロシージャの例です。

#define SQL_TEXT Latin_Text
#include <sqltypes_td.h>
#include <string.h>

void xspwanytypefnc(void     *input1,
                    ...,
                    void     *result,
                    int      *indc_input1,
                    ...,
                    int      *indc_result,
                    char     sqlstate[6],
                    SQL_TEXT extname[129],
                    SQL_TEXT specific_name[129],
                    SQL_TEXT error_message[257])
{
   anytype_param_info_eon_t paraminfo[2];
   int numunk;

   FNC_GetAnyTypeParamInfo_eon(2*sizeof(anytype_param_info_eon_t),
      &numunk, paraminfo);

   if(((paraminfo[1].datatype == CHAR_DT) ||
       (paraminfo[1].datatype == VARCHAR_DT)) &&
       (paraminfo[1].paramIndex == -1)&&
       (paraminfo[1].direction == OUT_PM)&&
       (paraminfo[1].charset == LATIN_CT))
   {
      /* Process the value based upon the data type */
      switch(paraminfo[0].datatype)
      {
         case BYTEINT_DT:
            strcpy ((char *)result,"Byteint");
            break;
            /* Do some processing */
            ...
      }
   }
}

これに相当するSQLプロシージャ定義を次に示します。

CREATE PROCEDURE xspwanytypefnc(IN a TD_ANYTYPE,
                                ...,
                                OUT result1 TD_ANYTYPE)
LANGUAGE C
NO SQL
PARAMETER STYLE SQL
EXTERNAL NAME 'CS!xspwanytypefnc!xspwanytypefnc.c';