Přiznám se, že jsem nikdy nepoužíval komponentu TFDUpdateSQL. Vždy jsem SQL řešil jen přes TFDQuery. Předpokládám ale, že se Ti to v jedné proceduře nepodaří, protože pro update dat (vkládání, update, delete) používáš příkaz ExecSQL, který nevrací žádná data. Pro získání posledního ID potřebuješ mít klasický dotaz "SELECT LAST_INSERT_ID as product_id", který zároveň bude navázán na dataset. Uděláš aktivní dotaz, přečteš ID a dotaz ukončíš.
Já jsem měl něco takového:
function TFormHlavni.LastID : integer;
begin;
QLastID.Active := true;
result := DSLastID.DataSet.FieldByName('cislo').AsInteger;
QLastID.Active := false;
end;
s tím, že na začátku aplikace jsem do QLastID (což právě byla komponenta TFDQuery) vložil QLastID.Sql.Add('SELECT LAST_INSERT_ID() as cislo'); a na QLastID mám navázanou komponentu TDataSource.
Tuto funkci jsem pak volal kdykoliv, když jsem vkládal data.