[firebase-br] Por favor, duvida em Transacao e Stored Procedure >>> melhor detalhada <<<
Antonio Carlos
a.lima.silva em terra.com.br
Seg Ago 27 20:44:51 -03 2018
Depois de ler o que postei anteriormente, percebi que ficou vago.
Ambiente : Firebird 2.5, Delphi XE com DBExpress ( sistema legado não posso mudar )
Em um dado ponto do sistema, onde existe a concretização da venda, preciso fazer toda a operação referente a lançamento de movimentação de itens, financeiro e etc.
Isso deve ser feito no contexto de transação onde havendo sucesso é feito um Commit e havendo erro um Roolback
Estou processando tudo através uma SP da seguinte forma :
try
sqlSP := TSQLStoredProc.Create(nil);
try
sqlSP.SQLConnection := Conn;
T := Conn.BeginTransaction(TDBXIsolations.ReadCommitted);
with sqlSP do
begin
StoredProcName := 'SP_PROCESSA';
ParamByName('IN_DADOS').AsString := 'STRING DE PARAMETROS'
ExecProc;
end
Conn.CommitFreeAndNil(T);
finnaly
FreeAndNil(sqlSP);
end
except
Conn.RollbackFreeAndNil(T);
end;
São pedidos sempre diferentes, mas quando ocorre de haver na baixa em um pedido produtos iguais da DEADLOCK e parte é executa e parte não, mesmo havendo a transação declarada explicitamente.
Eu não entendo porque isso, pois entendo que deveria haver uma fila.
Poderiam por favor dar uma luz ?Obrigado.
Mais detalhes sobre a lista de discussão lista