procedure TForm2.Button1Click(Sender: TObject);
begin
  with adoquery1 do
   begin
        .
        .
        .     //这里的步骤我省略不粘贴过来了。
        .
        .
    close;
     with SQL do
      begin
       clear;
       add('create procedure avgot');
       add('@week char(10)');
       add('as');
       add('declare @avgot float(8)');
       add('select @avgot=avg(季节性系数) from link_sales where 工作日=@week');
       add('insert into #o values(@week,@avgot)');      execsql;
      end;
    end;
  adostoredproc1.Close;
  adostoredproc1.ProcedureName:='avgot';
  ADOStoredProc1.parameters.parambyname('@week').value:='星期一';//问题在这里。
  adostoredproc1.Prepared:=true;
  adostoredproc1.Open;
end;
end.由于我要求一周7天的“@avgot”,难道要写7段
adostoredproc1.Close;
  adostoredproc1.ProcedureName:='avgot';
  ADOStoredProc1.parameters.parambyname('@week').value:='星期×';
  adostoredproc1.Prepared:=true;
  adostoredproc1.Open;有什么简便方法?

解决方案 »

  1.   

    你循环7次调用不就完了,每次循环的week赋值从一个数组中读出来,就是
    arrayWeek[0]//里边存星期一
    arrayWeek[1]//里边存星期二
    ..
      

  2.   

    同意wudi_1982(Delphi & Vs.NET)的做法,楼主可以先试试,我还建议你把循环写到存储过程里,那调用存储过程时参数也省了!
      

  3.   

    嗯。谢谢,我的老师也说我了,存储过程不要动态创建。
    我已经改了,直接写在sqlserver里,然后再调用