Só pre deixar registrado aqui .. Em conexões com ambientes de rede instável
é um perigo usar o Faretry quando a conexão cai dentro de uma transação em uma procedure que utiliza um while com TDQUERY.EOF , segundo o manual do firedac algumas operações são descartadas..
Exemplo.. Se uma transação em andamento sofre uma queda de conexão.. Quando a conexão é recuperada as operações que foram feitas antes da queda de conexão são descartadas..
Exemplo pratico.. Ao finalizar uma venda, conexão cai no meio do processo bem no meio do processamento de estoque , vários itens dessa venda não serão processados , alguns baixando estoque outros não..
Talvez a melhor solução é trocar o While not tfdquery.eof pelo for.. Ainda não testei , mas estarei realizando testes