FDQuery.Params.Clear;
FDQuery.SQL.Text:='begin INSERT INTO ' + FTable + ' (F1, F2, F3, F4, F5, F6, F7, F8) '+
'VALUES(:M1, :M2, :M3, :M4, :M5, :M6, :M7, :M8);'+
'exception when others then pkg_loaddata.LogError(3,''Error '+FTable+''',SQLErrm(),0);rollback; end;';
FCount:= 10000;
FDQuery.Params.ArraySize:= FCount;
for I := 0 to FCount-1 do
begin
FDQuery.ParamByName('M1').AsDateTimes[I]:= M1[i];
FDQuery.ParamByName('M2').AsDateTimes[I]:= M2[i];
FDQuery.ParamByName('M3').AsStrings[I]:= M3[i];
FDQuery.ParamByName('M4').AsStrings[I]:= M4[i];
FDQuery.ParamByName('M5').AsStrings[I]:= M5[i];
FDQuery.ParamByName('M6').AsIntegers[I]:= M6[i];
FDQuery.ParamByName('M7').AsIntegers[I]:= M7[i];
FDQuery.ParamByName('M8').AsIntegers[I]:= M8[i];
{ SetData}
end;
FDQuery.Execute(FDQuery.Params.ArraySize);
if FCount >=100 000 then ACCESS VIOLATION