AdoTemp.SQL.Clear ;
AdoTemp.Sql.Text:='exec Portdb.dbo.Usp_JocSave :RName,:DCode,:RYear,:RMonth,:Operator,:Msg output';
AdoTemp.Parameters.ParamByName('RName').value:=RName;
AdoTemp.Parameters.ParamByName('DCode').value:=DCode;
AdoTemp.Parameters.ParamByName('RYear').Value :=RYear;
AdoTemp.Parameters.ParamByName('RMonth').Value :=RMonth;
AdoTemp.Parameters.ParamByName('Operator').Value :=Operator;
AdoTemp.Parameters.ParamByName('Msg').Value :='';
AdoTemp.ExecSQL;
我用的是Delphi6+Sql2000,用上面的语句执行时经常会有“超时”,
直接在SQL中执行(exec Portdb.dbo.Usp_JocSave'收付存表','DC','2008','3','s001',@msg output)就比较快,
最上面的Delphi语句部分应如何优化,以提高执行效率??

解决方案 »

  1.   

    那就把它先合并为 exec Portdb.dbo.Usp_JocSave'收付存表','DC','2008','3','s001',@msg output 字符串再执行呗
      

  2.   

    SQL1:STRING;
    SQL1:=  'exec Portdb.dbo.Usp_JocSave''' + RName + ''','''+ DCode+ ''','''+ ......
      

  3.   

    AdoTemp把它的timeout时间设的足够长,默认为30
    你在sql中直接执行,大约多长时间呢,做一下对比,设置一下adotemp的参数,有几个参数可以更改的.
    比如cursorlocation这个
      

  4.   

    谢谢大家,把timeout改为1000,OK了,谢谢