次に示すコードの抜粋部分では、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_eon_t paraminfo[2]; FNC_GetAnyTypeParamInfo_eon(2*sizeof(anytype_param_info_eon_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';