Ct_param非法值为0

时间:2013-03-19 13:07:06

标签: c++ sybase

我使用sybase 15 / 12.5和CS_VERSION_100

当我尝试使用ct_param时,我收到错误:

An illegal value of 0 was placed in the status field of the CS_DATAFMT structure.

但是,我用。创建我的结构。

CS_DATAFMT datafmt;
strcpy(datafmt.name, "@interface");
datafmt.namelen = 11;
datafmt.datatype=CS_INT_TYPE;
datafmt.maxlength=4;
datafmt.status=CS_INPUTVALUE;
datafmt.locale = NULL;
datafmt.format = 0;
datafmt.scale = -99999;
datafmt.count = 1;
datafmt.usertype=0;

ct_param(command, &datafmt, /* value 300 */, 4, 0)

当我使用varchar时,它返回1(true),但它当然告诉我,我试图将varchar参数放在int参数的位置。 我改为最后一个版本,现在似乎sybase从maxlength获取状态值。现在它告诉我该值为4。 如果我将maxlength更改为256,则可以...

2 个答案:

答案 0 :(得分:0)

看起来你正在设置一个返回变量 - 根据The Fine Manual  你需要使用CS_RETURN作为datafmt.status,而不是CS_INPUTVALUE

答案 1 :(得分:0)

问题是,我正在编译64位,64位的每个sybase程序都需要-DSYB_LP64。 然后我用64位编译,但sybase类型是32位,然后sctruct混乱。