执行一个功能我用线程去实现,其中这个功能里面要重复调用一个求和的函数:function TfrmIO.getTotalMoney(t1,t2: TDateTime): Double;
begin
  {获得指定时间段的消费总额}
  with DM.qryNew1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('call totalMoney (:v1,:v2)');
    Parameters.ParamByName('v1').Value := t1;
    Parameters.ParamByName('v2').Value := t2;
    Open;
  end;
  if Trim(DM.qryNew1.Fields[0].AsString) = '' then
    Result := 0
  else
    Result := DM.qryNew1.Fields[0].Value;
end;
在调用的时候,第一次调用没问题,但是第二次调用的时候就报Commands out of sync; you can't run this command now,我在网上找了很多这方面的,说:
-----------------------------------
其实这是因为上一个sql执行返回了多个结果集,但没有把结果都取出来,就执行了新的sql语句,就会产生这个错误。
应在sql语句执行后
用mysql_store_result(&ninghao79);取出结果集,
然后用mysql_next_result(&ninghao79);检查是否有剩余结果集,
如果有就再用mysql_store_result(&ninghao79);把剩余结果集取出来。
这样就能解决CR_COMMANDS_OUT_OF_SYNC错误了。
-----------------------------------
但是在delphi中没有这些方法,我该怎么解决呢?