[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