[firebase-br] Por favor, duvida em Transacao e Stored Procedure >>> melhor detalhada <<<

Gladiston Santana gladiston em vidy.com.br
Qua Ago 29 13:26:53 -03 2018


try
  T.ExecSQL;
   T.Connection.Commit[Retaining];
except
on e:exception do
    begin
         T.Connection.Roolback[Retaining];
         ShowMessage('Devido ao erro:'+sLineBreak+e.message+' a transação
atual foi desfeita);
    end;
end;
if Assigned(T) then
  FreeAndNil(T);

Em 27 de agosto de 2018 20:44, Antonio Carlos <a.lima.silva em terra.com.br>
escreveu:

> 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.
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://www.firebase.com.br/
> pesquisa_lista.html
>



-- 
A Vidy possui um Sistema de Gestão da Qualidade estruturado e com
Certificação ISO 9001 há mais de 10 anos, mantendo seu foco na Qualidade e
na Melhoria Continua.

Em março de2018 migramos com sucesso para a nova versão da ISO 9001.

Somos a única Empresa Brasileira de Engenharia de Laboratórios com
certificação com o Escopo Completo; desde Projetos, Engenharia, Construção,
Fabricação e Instalação de Laboratórios.



Mais detalhes sobre a lista de discussão lista