如何用adoquery获取存储过程的返回结果? ( 积分: 50 )

  • 主题发起人 主题发起人 huay
  • 开始时间 开始时间
H

huay

Unregistered / Unconfirmed
GUEST, unregistred user!
我的目的是想用adoquery调用存储过程,接收其返回值并显示
存储过程:
CREATE procedure test
(
@xx int,
@returntest int out
)
as
SET @returntest=100
GO

delphi语句:
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('test :xx,:returntest');
adoquery1.Parameters.ParamByName('xx').Value:=99;
adoquery1.Parameters.ParamByName('returntest').Direction:=pdOutput;
adoquery1.ExecSQL;

dd:=adoquery1.fieldbyname('returntest').AsInteger;
edit1.Text:=inttostr(dd);
但是运行时老是提示参数错误,各位达人指点下如何获取存储过程中returntest的值100?
 
没有这样用过。
有专门的存储过程的组件。
怎么不用那个呢
 
没有这样用过。
有专门的存储过程的组件。
怎么不用那个呢
 
CREATE procedure test
(
@xx int,
@returntest int output //改动
)
as
SET @returntest=100
GO

delphi语句:
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('test :xx,:returntest output'); // 改动
adoquery1.Parameters.ParamByName('xx').Value:=99;
//adoquery1.Parameters.ParamByName('returntest').Direction:=pdOutput; //可改动
adoquery1.ExecSQL;

dd:=adoquery1.Param****.ParamByName('returntest').value; //Param****.忘了,你找下
edit1.Text:=inttostr(dd);
你找对人了,我已经刚做过类似过程,效果不好,后来改了.
 
jey ,能简单说下效果不好体现在哪里吗?
还有,你改用什么方式了?
谢谢
 
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('exec ProcedureName '''+para1+''','''+Para2+'''');
adoquery1.ExecSQL;
就这样直接就能得到结果。
 
to wuyongzhen:
冒号的引用分布是怎么样的?
拿过来编译运行越搞越糊涂
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('exec ProcedureName ''+para1+'',''+Para2+''');
adoquery1.ExecSQL;
编译能通过,但运行的时候提示vchar向int转换时出错
 
后退
顶部