我想用delphi中的TADOStoredProcedure控件来获取存储过程的返回值,却报错。
存储过程aaa
CREATE procedure aaa
@cydid varchar(50),
@sjdw varchar(50) output,
@cmpc varchar(50) output
as declare @use varchar(50),
@use2 varchar(50)
begin
select @use=sjdw, @use2=cpmc from jbxx where cydid=@cydid
select @sjdw=@use
select @cmpc=@use2
end
GOdelphi代码:
with sp1 do//sp1是TADOStoredProcedure控件
begin
Connection:=con1;
// Close;
ProcedureName:='aaa';
with Parameters do
begin
Clear;
Refresh;
CreateParameter('cydid',ftString,pdInput,50,null);
CreateParameter('sjdw',ftString,pdOutput,50,null);
CreateParameter('cmpc',ftString,pdOutput,50,null);
end;
Parameters[0].Value:=Trim(edt1.Text);
Prepared;
ExecProc;
try
edt2.Text:=Parameters.parambyname('sjdw').Value;
edt3.Text:=Parameters.parambyname('cmpc').Value;
except
ShowMessage('执行错误!');
end; end;运行后报“为过程或函数aaa指定的参数过多。
存储过程aaa
CREATE procedure aaa
@cydid varchar(50),
@sjdw varchar(50) output,
@cmpc varchar(50) output
as declare @use varchar(50),
@use2 varchar(50)
begin
select @use=sjdw, @use2=cpmc from jbxx where cydid=@cydid
select @sjdw=@use
select @cmpc=@use2
end
GOdelphi代码:
with sp1 do//sp1是TADOStoredProcedure控件
begin
Connection:=con1;
// Close;
ProcedureName:='aaa';
with Parameters do
begin
Clear;
Refresh;
CreateParameter('cydid',ftString,pdInput,50,null);
CreateParameter('sjdw',ftString,pdOutput,50,null);
CreateParameter('cmpc',ftString,pdOutput,50,null);
end;
Parameters[0].Value:=Trim(edt1.Text);
Prepared;
ExecProc;
try
edt2.Text:=Parameters.parambyname('sjdw').Value;
edt3.Text:=Parameters.parambyname('cmpc').Value;
except
ShowMessage('执行错误!');
end; end;运行后报“为过程或函数aaa指定的参数过多。
解决方案 »
- 急求研祥工控机的看门狗程序小例子!
- 简单的excel问题
- 在线等各位大侠了,我快疯了数据集无法返回!1
- 在fastreport中设置字体属性时出现提示"system error,code 1722,RPC服务器不可用"怎么解决??
- 如何将一个自定义结构写入一个Tstream类中,还有从Tstream中读取数据到自定义结构?
- 用ReportBuilder Enterprise Edition字段显示问题(难题)
- 在delphi中怎样删除一个文件夹(很可能里面有很多子文件夹和文件)?
- 哪位大侠有类似【一步一步创建COM】的文章?或类似电子书?百分感谢!
- DELPHI_5开发人员指南 这本书确实不错.....
- d6中做的dfm,d5中无法打开,帮帮忙
- 如何制作fastreport报表
- 用户进程中发生浮点异常错误。已取消当前事务。怎么解决
错误,若有的话,就将这个<存储过程aaa >写到一个
文本文件中再引用试试,若没有错误的话,就是你在
DELPHI中的语句可能有问题>>>>>>>>>>>
Refresh 之后,無需再創建參數,直接訪問即可
// CreateParameter('cydid',ftString,pdInput,50,null);
// CreateParameter('sjdw',ftString,pdOutput,50,null);
// CreateParameter('cmpc',ftString,pdOutput,50,null);
Refresh 之前,先prepared:= True
with Parameters do
begin
Clear;
Refresh;
CreateParameter('cydid',ftString,pdInput,50,null);
CreateParameter('sjdw',ftString,pdOutput,50,null);
CreateParameter('cmpc',ftString,pdOutput,50,null);
end;
把Refresh注释掉就好了。但还是给分吧。