[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