[firebase-br] FB2.5 Transactions
Carlos H. Cantu
listas em warmboot.com.br
Sáb Jul 14 20:48:21 -03 2012
Que eu saiba não haverá mudanças quanto a isso no FB 3.
Mas lembre-se que vc pode tratar exceções nas procedures, com o WHEN...DO. Com isso, creio que vc poderia processar os registros e armazenar em uma tabela temporária aqueles que deram problema, para posterior solução.
[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br
MR> Cantú,
MR>
MR> Que pena!
MR> É que o processamento via Storeprocedure é muitíssimo mais
MR> rápido enquanto que via aplicação é significativamente mais lento.
MR> Não há comparação possível em termos de velocidade.
MR> A StoreProcedure é chamada da minha aplicação da minha aplicação num único call:
MR> ///Procedure: PROC_APL_RETORNO_PS2
MR> StrProcPagaPs2.Close;
MR> StrProcPagaPS2.ParamByName('IN_TRANSAC_ID').AsString := IntToStr(iControloID) ;
MR> StrProcPagaPs2.Prepare;
MR> StrProcPagaPs2.ExecProc;
MR> Porém, todos inserts, updates etc... são feitos pela
MR> Storeprocedure, de forma que, se bem percebi, não dá
MR> para fazer o Start/Commit/RollBack, so fazendo flush para disco
MR> depois do balançao entre a comunicação de pagos ou não pagos e os
MR> efectivamente conseguidos aplicar/descarregar no ficheiro de
MR> Cobranças e Facturas/Recibos como efectivamente cobrados ou pagos!???
MR>
MR> Será que no Firebird3.0 vai haver alguma forma de o fazer o
MR> start/commit/rollback numa Store Procedure?
MR> V/tem alguma sugestão como pudesse contornar este problema sem
MR> passar por fazer tudo na aplicação
MR> atenta a degradação que lhe falei?
MR>
MR> De qualquer forma, obrigad. Muito agradeço a informação.
MR>
MR> Cumprimentos
MR> Mário Reis
MR>
MR>
MR> No dia 13 de Julho de 2012 13:24, Carlos H. Cantu
MR> <listas em warmboot.com.br>escreveu:
MR>
MR> O Firebird não suporta controle de transações
MR> (start/commit/rollback) dentro de
MR> procedures/triggers. Isso tem que ser feito na sua aplicação.
MR>
MR> []s
MR> Carlos H. Cantu
MR> www.FireBase.com.br - www.firebirdnews.org
MR> www.warmboot.com.br - blog.firebase.com.br
MR>
MR>> Olá Pessoal,
MR>> Estou com uma dificuldade. A minha aplicação recebe ficheiros pré-formatados
MR>> com centenas/milhares de registos a partir dos quais tenho de actualizar o meu
MR>> banco de dados a débito ou a crédito. Acontece esses ficheiros embora
MR>> formatados no meu sistema são modificados pelos bancos que procedem aos
MR>> pagamentos ou às cobranças e, por vezes, são-me devolvidos com erros de
MR>> formatação e outros que me causam sérios problemas.
MR>
MR>> Esses ficheiros são processados em "batch" através de uma "Store Procedure"
MR>> que lê os ficheiros recebidos "While not Eof" e de acordo o código de
MR>> Pagos/Nãopagos ou Cobrados/NãoCobrados vão actualizar o ficheiro de cobranças
MR>> do meu sistema(uma espécie de conta corrente).
MR>> Ora, gostaria de fazer "commit ou rollback" no fim, depois de efectuadas todas
MR>> validações entre os registos informados com .
MR>> Estou à procura na net de exemplos que ensinem "begin transaction commit e
MR>> rollback e não estou a encontrar nada de clarificador.
MR>> Alguém tem algum exemplo ou link que possa me facultar.
MR>> Obrigado
MR>> Mário Reis
MR>
MR>
MR> ______________________________________________
MR> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
MR> Para saber como gerenciar/excluir seu cadastro na lista, use:
MR> http://www.firebase.com.br/fb/artigo.php?id=1107
MR> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
MR>
Mais detalhes sobre a lista de discussão lista