这样调用存储过程,为什么无法绑定变量?

[复制链接]
查看11 | 回复1 | 2011-11-1 16:25:51 | 显示全部楼层 |阅读模式
本帖最后由 windtalker_cs 于 2011-12-14 08:08 编辑
ADO如下方式调用存储过程:
//ObjID
//vValue=ObjID.c_str();
vValue=atoi(ObjID.c_str());
ParPtr=CmdPtr->CreateParameter("",adInteger,adParamInput,4,vValue);
CmdPtr->Parameters->Append(ParPtr);
//Gps时间
vValue.Clear();
vValue.vt=VT_DATE;
vValue.date=dbTime;
ParPtr=CmdPtr->CreateParameter("",adDBTimeStamp,adParamInput,8,vValue);
CmdPtr->Parameters->Append(ParPtr);
//lon
vValue=PBasePos.Lon;
ParPtr=CmdPtr->CreateParameter("",adSingle,adParamInput,sizeof(float),vValue);
CmdPtr->Parameters->Append(ParPtr);
//lat
vValue=PBasePos.Lat;
ParPtr=CmdPtr->CreateParameter("",adSingle,adParamInput,sizeof(float),vValue);
CmdPtr->Parameters->Append(ParPtr);
//Spead
vValue=PBasePos.Speed;
ParPtr=CmdPtr->CreateParameter("",adSmallInt,adParamInput,2,vValue);
CmdPtr->Parameters->Append(ParPtr);
//heading
vValue=PBasePos.Direction;
ParPtr=CmdPtr->CreateParameter("",adSmallInt,adParamInput,2,vValue);
CmdPtr->Parameters->Append(ParPtr);
//高度
vValue=0;
ParPtr=CmdPtr->CreateParameter("",adSmallInt,adParamInput,2,vValue);
CmdPtr->Parameters->Append(ParPtr);
//fMileage
vValue=PBasePos.Mileage;
ParPtr=CmdPtr->CreateParameter("",adDouble,adParamInput,8,vValue);
CmdPtr->Parameters->Append(ParPtr);
//状态
vValue=PBasePos.i64CarStatus;
ParPtr=CmdPtr->CreateParameter("",adBigInt,adParamInput,8,vValue);
CmdPtr->Parameters->Append(ParPtr);

string Status=PBasePos.Status;
if(Status.find("3D")!=string::npos)
{
vValue=1;
}else
{
vValue=0;
}
ParPtr=CmdPtr->CreateParameter("",adSmallInt,adParamInput,2,vValue);
CmdPtr->Parameters->Append(ParPtr);
//状态
if(Status.find("ACC开")!=string::npos)
{
vValue=1;
}else
{
vValue=0;
}
ParPtr=CmdPtr->CreateParameter("",adTinyInt,adParamInput,2,vValue);
CmdPtr->Parameters->Append(ParPtr);
vValue=0;
ParPtr=CmdPtr->CreateParameter("",adTinyInt,adParamInput,2,vValue);
CmdPtr->Parameters->Append(ParPtr);
char Text[1000];

sprintf_s(Text,1000,"pr_single_gps_data_ins");
CmdPtr->CommandText=Text;
CmdPtr->CommandType=adCmdStoredProc;
CmdPtr->CommandTimeout=1;

但是从调用的存储过程的结果来看。
[tr][td]7y4h9755gukak[/td][td]begin pr_single_gps_data_ins(:V00001, :V00002, :V00003, :V00004, :V00005, :V00006, :V00007, :V00008, 65229881351, :V00010, :V00011, :V00012); end;[/td][/tr]
[tr][td]880zmu0kd1bkx[/td][td]begin pr_single_gps_data_ins(:V00001, :V00002, :V00003, :V00004, :V00005, :V00006, :V00007, :V00008, 64760127491, :V00010, :V00011, :V00012); end;[/td][/tr]
[tr][td]
8ddavufs5ahs4[/td][td]begin pr_single_gps_data_ins(:V00001, :V00002, :V00003, :V00004, :V00005, :V00006, :V00007, :V00008, 64760127495, :V00010, :V00011, :V00012); end;[/td][/tr]
[tr][td]8
f9cyz73bjnx5[/td][td]begin pr_single_gps_data_ins(:V00001, :V00002, :V00003, :V00004, :V00005, :V00006, :V00007, :V00008, 65296998403, :V00010, :V00011, :V00012); end;
好像并没有绑定变量,是硬解析,这个参数唯一与其它不同的地方是OCCI中定义为一个BITINT。哪位大侠能给解释一下。。。。[/td][/tr]

回复

使用道具 举报

千问 | 2011-11-1 16:25:51 | 显示全部楼层
本帖最后由 windtalker_cs 于 2011-12-13 22:07 编辑
经过测试,当数据大到一定程度后,就不能绑定变量了。各位大侠来看一下是怎么回事。数据库为10.2.0.4 redhat 64 位和10.2.0.1 redhat 32位都是同一种情况;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行