使用动态TADOStoredProc,设置参数时出错
请看下面的代码:
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;
请各位大虾不吝赐教!