次に示すコードの抜粋部分では、FNC_GetAnyTypeParamInfo関数を呼び出して、TD_ANYTYPE引数についての情報を取得するUDFの例を示します。
#define SQL_TEXT Latin_Text
#include "sqltypes_td.h"
void ScalarFncWAnytype(void *input1,
...,
void *result,
char sqlstate[6])
{
anytype_param_info_t paraminfo[2];
FNC_GetAnyTypeParamInfo(2*sizeof(anytype_param_info_t), &numAnyType, 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関数の定義を次に示します。
REPLACE FUNCTION ScalarFncWAnytype ( p1 TD_ANYTYPE, ...) RETURNS TD_ANYTYPE NO SQL PARAMETER STYLE SQL RETURNS NULL ON NULL INPUT DETERMINISTIC LANGUAGE C EXTERNAL NAME 'CS!ScalarFncWAnytype!udfsrc/ScalarFncWAnytype.c';
FNC_GetAnyTypeParamInfo()を呼び出してTD_ANYTYPE引数の情報を取得するその他の例については、TD_ANYTYPEパラメータを使用するCスカラー関数およびTD_ANYTYPEパラメータを使用するC集約関数を参照してください。