各位高手:
   本人编程序,delphi6+oracle9i,利用adostoredproc控件,数据库端的存储过程中有5个参数,3个in参数,2个out参数。如何利用adostoredproc控件在程序中进行调用,需要设置那些属性?是否需要用datasource控件

解决方案 »

  1.   

    adostoreprocedure.procedureName := "存储过程名"
    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,除非你要绑定记录到其他控件上
      

  2.   

    还要记得,在重新调用别的存储过程时,你要创建Parameter。
      

  3.   

    还是不行,我的程序如下:
    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控件内创建
      

  4.   

    DM2.SQL_Connection.Close;
      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;