_commandptr 和 _Recordsetptr 的问题
54sp 2003-03-06 10:22:44 搜遍整个论坛,也没有关于这方面东西,只好麻烦大家解决啦!
我用ADO执行存储过程.参数中有入参和出参,有的还带有结果集.
现在的问题是如果把参数直接送进去,没有结果集的,可以把出参都取回来.但是如果有结果集的出参的值就不知道怎么获得了!
代码如下:
try
{
cmd.CreateInstance("ADODB.Command");
//入参
for(j=0;j<cfg.AllFunc[i].InputParamNum;j++)
{
GetValue(recvbuff,Param[j],j+2,'|');
pParamInput[j].CreateInstance("ADODB.Parameter");
pParamInput[j]->Name = cfg.AllFunc[i].InputParam[j].ParamName;
pParamInput[j]->Type = (DataTypeEnum)cfg.AllFunc[i].InputParam[j].ParamType;
pParamInput[j]->Size = cfg.AllFunc[i].InputParam[j].ParamSize;
pParamInput[j]->Direction=adParamInput;
Paramstr.Empty();
Paramstr.Format("%s",Param[j]);
pParamInput[j]->Value = _variant_t(Paramstr);
cmd->Parameters->Append(pParamInput[j]);
}
//出参
for(k=0;k<cfg.AllFunc[i].OutputParamNum;k++)
{
pParamOutput[k].CreateInstance("ADODB.Parameter");
pParamOutput[k]->Name = cfg.AllFunc[i].OutputParam[k].ParamName;
pParamOutput[k]->Type = (DataTypeEnum)cfg.AllFunc[i].OutputParam[k].ParamType;
pParamOutput[k]->Size = cfg.AllFunc[i].OutputParam[k].ParamSize;
pParamOutput[k]->Direction=adParamOutput;
cmd->Parameters->Append(pParamOutput[k]);
}
cmd->ActiveConnection = piConnection;
cmd->CommandText=cfg.AllFunc[i].StoredProc; //存储过程的名字
cmd->CommandType=adCmdStoredProc;//表示为存储过程adCmdStoredProc
cmd->Execute(&fieldcount, NULL, adCmdStoredProc);
这样的话可以接受到出参!
如果最后一句cmd->Execute(&fieldcount, NULL, adCmdStoredProc);
改成 pRecordSet = cmd->Execute(&fieldcount, NULL, adCmdStoredProc);
的话,可以把返回的结果集取回来,但出参就不知道怎么取了!