存储过程如下:
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 参数没有发现,请问这是什么问题,谢谢了
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 参数没有发现,请问这是什么问题,谢谢了
解决方案 »
- ListView如何实现上一行、下一行的功能
- 怎样禁止用鼠标拖动delphi记事本大小?
- HELP ADO连接EXCLE的问题 急死人了 。。。。。。。。。。。。。。解决了 马上给分 嫌少再加
- 现金求购,改进版idudpclient组件,要求能支持代理,源码,请高手支持
- 谁可以帮我修改一下这个语句的'datepart(''yyyy'',pjtime )='+edit2.text;部分
- 关于内存分配的问题,大虾请指点或讨论一下。大家请多多关注
- 怎么写不了注册表?????????
- 送分的题目
- 求助!!如何学好Delphi!
- 图象存取
- Function needs result type 这个问题 大家帮帮忙啊
- 日期格式化
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;