各位高手:
本人编程序,delphi6+oracle9i,利用adostoredproc控件,数据库端的存储过程中有5个参数,3个in参数,2个out参数。如何利用adostoredproc控件在程序中进行调用,需要设置那些属性?是否需要用datasource控件
本人编程序,delphi6+oracle9i,利用adostoredproc控件,数据库端的存储过程中有5个参数,3个in参数,2个out参数。如何利用adostoredproc控件在程序中进行调用,需要设置那些属性?是否需要用datasource控件
adostoreprocedure.Parameters.Refresh(); //刷新参数列表
三个in参数附值
adostoreprocedure.Parameter.ParamByName('@a1').Value := in存储过程参数a1的值
adostoreprocedure.Parameter.ParamByName('@a2').Value := in存储过程参数a2的值
adostoreprocedure.Parameter.ParamByName('@a3').Value := in存储过程参数a3的值
两个out参数可以附值,可以不附值
adostoreprocedure.Parameter.ParamByName('@b1').Value := in存储过程参数b1的值
adostoreprocedure.Parameter.ParamByName('@b2').Value := in存储过程参数b2的值
adostoreprocedure.ExecProc();如果这样还不行
那么在adostoreprocedure.Parameters.Refresh();
刷新参数列表之前
先创建参数列表
adostoreprocedure.Parameters.CreateParameter、、、、不要datasource,除非你要绑定记录到其他控件上
with spJob do
begin
Close;
connection := dbTemp;
ProcedureName:='sJob_Create_Once_EveryDay';
Parameters.ParamByName('StartDateTime').Value := datetostr(dtpTimeCx.Date);
Parameters.ParamByName('iWhatTime').Value :=strtoint(edtTimePer.text);
Parameters.ParamByName('UserName').Value := mUserName;
Parameters.Refresh();
ExecProc;
psFlag:= Parameters.ParamByName('sFlag').Value;
psMessage:= Parameters.ParamByName('sMessage').Value;
end;
系统提示:StartDateTime not found
parameters在adostoredproc控件内创建
DM2.SQL_Connection.DefaultDatabase:='master';
DM2.SQL_StoredProc.Connection:=DM2.SQL_Connection;
DM2.SQL_StoredProc.CommandTimeout:=3000;
DM2.SQL_StoredProc.ProcedureName:='DB_Backup_Restore';
DM2.SQL_StoredProc.Parameters.Clear;
if ComBox3.ItemIndex=0 then
DM2.SQL_StoredProc.Parameters.CreateParameter('@DataPath',ftWideString,pdInput,260,Null())
else
DM2.SQL_StoredProc.Parameters.CreateParameter('@DataPath',ftWideString,pdInput,260,trim(ComBox3.Text));
DM2.SQL_StoredProc.Parameters.CreateParameter('@kind',ftString,pdInput,1,'R');
DM2.SQL_StoredProc.Parameters.CreateParameter('@retmsg',ftString,pdInputOutput,20,'');
try
DM2.SQL_StoredProc.ExecProc;
showmessage(DM2.SQL_StoredProc.Parameters.ParamByName('@retmsg').Value);
except
DM2.SQL_StoredProc.Close;
end;