Delphi中怎么调用SQL数据库的存储过程
Delphi中如何调用SQL数据库的存储过程
我的存储过程:ALTER PROCEDURE [dbo].[mathin]
@FuntionID INT= 0 , --100 新增, 200 修改, 300 删除 , 400 查询
如何用ADOQurery控件调用
qry1.Close ;
qry1.SQL.Clear ;
qry1.SQL.Add({exec mathin @Funtion=100,@货号=6,@条码=3432,@拼音编码=dsgg,@品名=梨子,@规格=8796,@单位=斤,@产地=江苏苏州,@类别=sdgh,@进货价=2,@销售价1=3,@销售价2=4,@最低售价=3});
qry1.Open ;
这是我自己瞎写的,不会啊,请高手们多多指教
------解决方案--------------------
用ADOStoredProc执行存储过程
------解决方案--------------------
ADOStoredProc可以,adoquery也可以,写sql exec ...
------解决方案--------------------
把最后一行的 OPEN
改成 ExecSQL
------解决方案--------------------
示例:
我的存储过程:ALTER PROCEDURE [dbo].[mathin]
@FuntionID INT= 0 , --100 新增, 200 修改, 300 删除 , 400 查询
如何用ADOQurery控件调用
qry1.Close ;
qry1.SQL.Clear ;
qry1.SQL.Add({exec mathin @Funtion=100,@货号=6,@条码=3432,@拼音编码=dsgg,@品名=梨子,@规格=8796,@单位=斤,@产地=江苏苏州,@类别=sdgh,@进货价=2,@销售价1=3,@销售价2=4,@最低售价=3});
qry1.Open ;
这是我自己瞎写的,不会啊,请高手们多多指教
------解决方案--------------------
用ADOStoredProc执行存储过程
------解决方案--------------------
ADOStoredProc可以,adoquery也可以,写sql exec ...
------解决方案--------------------
把最后一行的 OPEN
改成 ExecSQL
------解决方案--------------------
示例:
- Delphi(Pascal) code
var qt_:Tadoquery; counts_:Integer; qt_:=TADOQuery.Create(nil); try with qt_ do begin try Connection:=DM.ADODB; sql.Text:='exec proc_3_isTab_yhfw_SIDNo :yhfw_sidno_,:tb_,:counts_ out'; //执行存储过程proc_3_isTab_yhfw_SIDNo,共有三个参数,其中yhfw_sidno_、tb_传入存储过程,counts_为存储过程返回 Parameters.ParamByName('yhfw_sidno_').Value:=yhfw_SIDNo; //传值给存储过程参数 Parameters.ParamByName('tb_').Value:=Trim(tb_); //传值给存储过程参数 ExecSQL; counts_:=Parameters.ParamByName('counts_').Value; //取存储过程返回值 if counts_>0 then Result:='True' else Result:='False'; except on E:exception do begin ShowMessage('执行失败'); Result:='Error'; end; end; end; finally qt_.Free; end;
------解决方案--------------------
关注。
------解决方案--------------------
1.将open修改为ExecSQL
2.语句用''包括在内
------解决方案--------------------
- Delphi(Pascal) code
qry_tep_go.Close; qry_tep_go.SQL.Clear; qry_tep_go.SQL.Add( ' exec SP_HR_QXY_RATE @Years= '+ QuotedStr(Trim(cxComboBox5.Text))+' ' ); qry_tep_go.ExecSQL;
------解决方案--------------------
存储过程啊。正在学
------解决方案--------------------
3楼正解,用ExecSQL,不能用Open。
当ADOQuery中是 Insert、Update、Delete 等那么不返回结果集(数据记录)的SQL命令时, 必须用ExecSQL 。
------解决方案--------------------