AL8:
{
sqlvar->sqltype = CINT8TYPE;
break;
}
case SQLBIGSERIAL:
case SQLINFXBIGINT:
{
sqlvar->sqltype = CBIGINTTYPE;
break;
}
case SQLDECIMAL:
{
sqlvar->sqltype = CDECIMALTYPE;
break;
}
case SQLSMFLOAT:
{
sqlvar->sqltype = CFLOATTYPE;
break;
}
case SQLFLOAT:
{
sqlvar->sqltype = CDOUBLETYPE;
break;
}
case SQLCHAR:
{
sqlvar->sqltype = CCHARTYPE;
break;
}
case SQLNCHAR:
{
sqlvar->sqltype = CFIXCHARTYPE;
break;
}
case SQLVCHAR:
case SQLNVCHAR:
{
sqlvar->sqltype = CVCHARTYPE;
break;
}
case SQLLVARCHAR:
{
sqlvar->sqltype = CLVCHARTYPE;
break;
}
case SQLMONEY:
{
sqlvar->sqltype = CMONEYTYPE;
break;
}
case SQLINTERVAL:
{
sqlvar->sqltype = CINVTYPE;
break;
}
case SQLDATE:
{
sqlvar->sqltype = CDATETYPE;
break;
}
case SQLDTIME:
{
sqlvar->sqltype = CDTIMETYPE;
break;
}
case SQLROW:
{
sqlvar->sqltype = CROWTYPE;
break;
}
case SQLSET:
case SQLLIST:
case SQLMULTISET:
case SQLCOLLECTION:
{
sqlvar->sqltype = CCOLLTYPE;
break;
}
case SQLTEXT:
case SQLBYTES:
{
sqlvar->sqltype = CLOCATORTYPE;
break;
}
default: /* Other data type */
{
return -1;
}
}
return 0;
}
代码说明:
1. 数据类型的转换对应关系,请参考:http://blog.csdn.net/royalapex/article/details/8205654
代码段四:
[cpp]
/* 初始化sqldata数据空间 */
int db_ifx_init_sqldata(db_ifx_cntx_t *context, struct sqlvar_struct *sqlvar, int alloc_num)
{
char errmsg[DB_ERR_MSG_MAX_LEN] = {0};
int ret = 0, alloc_size = 0;
/* 1. 为指示符变量申请空间 */
sqlvar->sqlind = (short *)calloc(alloc_num, sizeof(short));
if(NULL == sqlvar->sqlind)
{
return -1;
}
/* 2. 为存放非TEXT 和BLOB的数据类型的sqldata申请空间.
注意: 申请的地址是(char *),在输出数据时,要按照相应的数据类型做转换 */
if(CLOCATORTYPE != sqlvar->sqltype)
{
alloc_size = alloc_num*sqlvar->sqllen;
if(sqlvar->sqllen > context->convert_size)
{
context->convert_size = sqlvar->sqllen;
}
sqlvar->sqldata = (char*)calloc(1, alloc_size);
if(NULL == sqlvar->sqldata)
{
return -1;
}
return 0;
}
/* 3. 为TEXT和BLOB的数据类型的sqldata申请空间 */
return db_ifx_alloc_loc(context, sqlvar, alloc_num);
}
代码段五:
[cpp]
/* 申请loc_t类型的数据空间 */
int db_ifx_alloc_loc(db_ifx_cntx_t *context, struct sqlvar_struct *sqlvar, int alloc_num)
{
char errmsg[DB_ERR_MSG_MAX_LEN] = {0};
int idx = 0, alloc_size = 0;
loc_t *loc = NULL;
alloc_size = alloc_num*sqlvar->sqllen;
if(sqlvar->sqllen > context->convert_size)
{
context->conve