Die Klammer ist falsch. Ich habe gerade kein Delphi zu Hand. Aber so sollte es gehen:
Delphi-Quellcode:
var
sL, slF: TStrings;
i: Integer;
...
begin
try
sl := TStringlist.Create;
slf := TStringList.Create;
slf.Delimiter := ';';
sl.add( 'Susi'; 'Müller'; ...
..
IBQuery.SQL.Text := 'update or insert into Personen ( vorname, nachname, gebdat) values ( :vorname, :nachname, :gebdat ) MATCHING ( vorname, gebdat) RETURNING id;';
for i := 0 to sl.Count -1 do
begin
slf.DelimitedText := sl[i];
IBQuery.Params[0].Value := slf[0];
IBQuery.Params[1].Value := slf[1];
IBQuery.Params[2].Value := slf[2];
IBQuery.ExecSQL;
id := IBQuery.Params[3].Value; //oder id := IBQuery.ParamByName('RET_ID').Value;
...
end;
finally
slf.Free;
sl.Free;
...
end;