循环调用存储过程的问题

adminwang 2009-10-19 11:28:39
我在vc中调用存储过程第一次成功,循环的第二次报错,以下是代码

_CommandPtr pComm;
_ParameterPtr Para0;
_ParameterPtr Para1;
_ParameterPtr Para2;
_ParameterPtr Para3;

pComm.CreateInstance("ADODB.Command");
pRecordset_Recv.CreateInstance("ADODB.Recordset");
Para0.CreateInstance("ADODB.Parameter");
Para1.CreateInstance("ADODB.Parameter");
Para2.CreateInstance("ADODB.Parameter");
Para3.CreateInstance("ADODB.Parameter");
pComm->ActiveConnection=m_pConnection;
pComm->CommandType=adCmdStoredProc;
pComm->CommandText=_bstr_t("p_whtyvote_new");

while(1=1)
{
Para0=pComm->CreateParameter(_bstr_t("Mobile"),adVarChar,adParamInput,20,(_variant_t)"test");
pComm->Parameters->Append(Para0);
Para1=pComm->CreateParameter(_bstr_t("Err"),adInteger,adParamOutput,1);
pComm->Parameters->Append(Para1);
Para2=pComm->CreateParameter(_bstr_t("vMax"),adInteger,adParamInput,-1,(_variant_t)"15");
pComm->Parameters->Append(Para2);
Para3=pComm->CreateParameter(_bstr_t("AClass"),adVarChar,adParamInput,10,(_variant_t)"ylj");
pComm->Parameters->Append(Para3);

pComm->Execute(NULL,NULL,adCmdStoredProc);

int Num=Para1->Value;
}

请各位指教,谢谢!
...全文
69 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
adminwang 2009-10-19
  • 打赏
  • 举报
回复
第二次运行到这句出错
pComm->Execute(NULL,NULL,adCmdStoredProc);
fandh 2009-10-19
  • 打赏
  • 举报
回复
出错的是那句?
adminwang 2009-10-19
  • 打赏
  • 举报
回复
我试了,把Para1=pComm->CreateParameter(_bstr_t("Err"),adInteger,adParamOutput,1); 这句放出去,还是不行,能详细写一下吗?谢谢
qiangorqiang 2009-10-19
  • 打赏
  • 举报
回复
pComm->Parameters->Append(Para0);
Para1=pComm->CreateParameter(_bstr_t("Err"),adInteger,adParamOutput,1);
....
把创建参数的代码放在循环外面,循环内只要对已创建的参数付值就可以了。

adminwang 2009-10-19
  • 打赏
  • 举报
回复
谢谢qiangorqiang,好了
qiangorqiang 2009-10-19
  • 打赏
  • 举报
回复
这样:
_CommandPtr pComm;
_ParameterPtr Para0;
_ParameterPtr Para1;
_ParameterPtr Para2;
_ParameterPtr Para3;

pComm.CreateInstance("ADODB.Command");
pRecordset_Recv.CreateInstance("ADODB.Recordset");
Para0.CreateInstance("ADODB.Parameter");
Para1.CreateInstance("ADODB.Parameter");
Para2.CreateInstance("ADODB.Parameter");
Para3.CreateInstance("ADODB.Parameter");
pComm->ActiveConnection=m_pConnection;
pComm->CommandType=adCmdStoredProc;
pComm->CommandText=_bstr_t("p_whtyvote_new");

Para0=pComm->CreateParameter(_bstr_t("Mobile"),adVarChar,adParamInput,20,(_variant_t)"test");
pComm->Parameters->Append(Para0);
Para1=pComm->CreateParameter(_bstr_t("Err"),adInteger,adParamOutput,1);
pComm->Parameters->Append(Para1);
Para2=pComm->CreateParameter(_bstr_t("vMax"),adInteger,adParamInput,-1,(_variant_t)"15");
pComm->Parameters->Append(Para2);
Para3=pComm->CreateParameter(_bstr_t("AClass"),adVarChar,adParamInput,10,(_variant_t)"ylj");
pComm->Parameters->Append(Para3);

while(1=1)
{
Para0->Value = ?;
Para1->Value = ?;
Para2->Value = ?;
.
.
.

pComm->Execute(NULL,NULL,adCmdStoredProc);

int Num=Para1->Value;
}

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧