次に示すコードの抜粋部分は、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';