使用动态TADOStoredProc,设置参数时出错

MountLion 2001-09-07 10:41:06
请看下面的代码:
ADOConnection1,ADOStoreProc1是设计时放到Form上的
并且在IDE中接通了ADOConnection1,指定了ADOStoredProc1的各属性及参数
Button1Click运行没有错误,
Button2Click中使用了动态生成的TADOStoredProc,实现与Button1Click相似的功能,
运行出现了错误:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ADOStoredProc1->Connection=ADOConnection1; //这三行
ADOStoredProc1->ProcedureName="GNTMPP"; //设计时
ADOStoredProc1->Parameters->ParamValues["vi"]="DesignTime"; //已指定,可省略
ADOStoredProc1->ExecProc();
ShowMessage(ADOStoredProc1->Parameters->ParamValues["vo"]);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TADOStoredProc * sp=new TADOStoredProc(this);
sp->Connection =ADOConnection1;
sp->ProcedureName="GNTMPP";
//下一句运行错误: Parameter "vi" not found
sp->Parameters->ParamValues["vi"]="RunTime";
sp->Prepared =true;
sp->ExecProc();
ShowMessage(sp->Parameters->ParamValues["vo"]);
delete sp;
}
//---------------------------------------------------------------------------

其中GMTMPP是Oracle的存储过程:
procedure gntmpp(vi in varchar2,vo out varchar2) is
begin
vo:=vi||vi;
end;


请各位大虾不吝赐教!
...全文
222 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Norwaywoods 2001-09-12
  • 打赏
  • 举报
回复
我也有一个类似的问题,就是Builder帮助里的
ADOStoredProc1->Close();
ADOStoredProc1->Parameters[1]->Value = 1;
ADOStoredProc1->Open()
根本不对,为什么?
MountLion 2001-09-07
  • 打赏
  • 举报
回复
使用mirageTF(mirageTF)的方法通过。
莫非IDE自己调用了CreateParameter?帮助中怎么不说明?
费解。
wyb_star 2001-09-07
  • 打赏
  • 举报
回复
我最近也遇到了这个问题,动态指定ADOStoredProc1->ProcedureName="GNTMPP"; 不好使,但如果直接在数据模块中静态指定就好使,真奇怪!
mirageTF 2001-09-07
  • 打赏
  • 举报
回复
OleVariant jj,kk;
jj=OleVariant(AnsiString("RunTime"));

sp->Parameters->CreateParameter("@i",ftString ,pdInput,10,jj);
sp->Parameters->CreateParameter("@r",ftString ,pdOutput,10,kk);
sp->Prepared =true;
MountLion 2001-09-07
  • 打赏
  • 举报
回复
试过了,
//sp->Parameters->ParamValues["vi"]="RunTime";
sp->Parameters->ParamByName("vi")->Value="RunTime";
还是在运行时出错: Parameter "vi" not found
TR@SOE 2001-09-07
  • 打赏
  • 举报
回复
可以试试ParamByName吗?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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