[firebase-br] Por favor, duvida em Transacao e Stored Procedure.

Antonio Carlos a.lima.silva em terra.com.br
Seg Ago 27 18:39:49 -03 2018


Firebird 2.5, Delphi XE com DBExpress 


Caros, estou com a seguinte situação, e estou com uma dúvida.

Em dado ponto do sistema onde vai ocorrer a concretização da venda, preciso fazer toda a operação referente a lançamento de movimentação de itens, financeiro e etc.

preciso fazer isso em um contexto de transação onde havendo sucesso é feito um Commit e havendo erro um Roolback

Pensei em algo assim em uma STORED PROCEDURE por se tratar de processamento longo e porque penso no futuro separar a aplicação 
      try
        sqlSP := TSQLStoredProc.Create(nil);
        sqlSP.SQLConnection := Conn;
        T := Conn.BeginTransaction(TDBXIsolations.ReadCommitted);
        with sqlSP do
          begin
            StoredProcName := 'SP_PROCESSA';
            ParamByName('IN_DADOS').AsString  := 'STRING DE PARAMETROS'
            ExecProc;
            if  ParamByName('RESULT').AsInteger = 0 then  
               Conn.CommitFreeAndNil(T)
           else
               Conn.RollbackFreeAndNil(T);
      finally
        FreeAndNil(sqlSP);
      end;

Posso reverter uma ação que ocorre em uma StoredProcedure ou terei que fazer inúmeros SQL  dentro da mesma transação para poder ter controle sobre o resultado ?

Por outro lado fiquei preocupado de haver muita concorrência dos clients pela STORED PROCEDURE e haver LOCK .

Poderiam por favor dar uma luz ?

Obrigado.









Mais detalhes sobre a lista de discussão lista