ADOStoredProc 取@return_value 参数返回值错误

chinafjfzlj 2010-12-01 07:30:30
存储过程如下:
CREATE PROCEDURE myAdd
@Num1 int,
@Num2 int,
@Sum int output
AS
BEGIN
SET NOCOUNT ON;

set @Sum=@Num1+@Num2;
return 1;
END

代码如下:
ADOStoredProc1.ProcedureName:='MyAdd';//存储过程名称
ADOStoredProc1.Parameters.clear;

ADOStoredProc1.Parameters.CreateParameter('@Num1',ftInteger,pdInput,4,1); //输入参数
ADOStoredProc1.Parameters.CreateParameter('@Num2',ftInteger,pdInput,4,2); //输入参数
ADOStoredProc1.Parameters.CreateParameter('@Sum',ftInteger,pdOutput,4,2);//输出参数



ADOStoredProc1.ExecProc;
Edit1.Text:=IntToStr(ADOStoredProc1.Parameters.ParamByName('@Sum').Value);

Edit2.Text:=inttostr(ADOStoredProc1.Parameters.ParamByName('@return_value').Value);//返回值

错误提示 ADOStoredProc1 默认的 @return_value 参数没有发现,请问这是什么问题,谢谢了
...全文
183 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kye_jufei 2010-12-02
  • 打赏
  • 举报
回复
eg:

ADOStoredProc1.close; 
ADOStoredProc1.parameters.parambyname(’@dwmc’).value:=’某某单位’;
ADOStoredProc1.prepared:=true;
ADOStoredProc1.open;
label1.caption:= ADOStoredProc1.fields[0].asstring;

procedure TForm1.Button1Click(Sender: TObject);
begin //根据动态赋参数序号赋值
ADOStoredProc1.Close;
DataSource1.DataSet:=ADOStoredProc1;
ADOStoredProc1.ProcedureName:='成绩查找';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters[1].Value:=200301001;
ADOStoredProc1.Parameters[2].Value:=4;
ADOStoredProc1.Parameters[3].Value:='SQL数据库';
ADOStoredProc1.Open;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin //根据动态赋参数名称赋值
ADOStoredProc1.Close;
DataSource1.DataSet:=ADOStoredProc1;
ADOStoredProc1.ProcedureName:='成绩查找';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('@学号').Value:=200301001;
ADOStoredProc1.Parameters.ParamByName('@学期').Value:=4;
ADOStoredProc1.Parameters.ParamByName('@课程名称').Value:='SQL数据库';
ADOStoredProc1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin //提取存储过程返回值
ADOStoredProc1.Close;
ADOStoredProc1.ProcedureName:='带返回值的成绩查找';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('@学号').Value:=200301001;
ADOStoredProc1.Parameters.ParamByName('@学期').Value:=4;
ADOStoredProc1.Parameters.ParamByName('@课程名称').Value:='SQL数据库';
ADOStoredProc1.Parameters.ParamByName('@结果').Value:=null;
ADOStoredProc1.ExecProc;
Edit1.Text:=IntToStr(ADOStoredProc1.Parameters.ParamByName('@结果').Value);
end;

procedure TForm1.Button3Click(Sender: TObject);
var i:integer;//提取存储过程返回的多个结果集的方法,
begin //返回第一个结果集
DataSource1.DataSet:=ADODataSet1;
if Button3.Caption='返回第一个结果集' then
begin
ADOStoredProc1.Close;
ADOStoredProc1.ProcedureName:='学生';
ADOStoredProc1.Open;
ADODataSet1.Recordset:=ADOStoredProc1.Recordset;
Button3.Caption:='返回第二个结果集';
end else
begin
ADODataSet1.Recordset:=ADOStoredProc1.NextRecordset(i);
DataSource1.DataSet:=ADODataSet1;
Button3.Caption:='返回第一个结果集';
end;
end;


bdmh 2010-12-01
  • 打赏
  • 举报
回复
先代码创建这个参数
Oraclers 2010-12-01
  • 打赏
  • 举报
回复
在上面建立参数时,@Retrun_Value同样要建立。

2,498

社区成员

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

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