Blog de Tecnologia desenvolvido por Thiago Campos Pereira

Blog criado para documentar e disseminar o conhecimento tecnológico adquirido por Thiago Campos Pereira e colaboradores.

terça-feira, agosto 22, 2006

Oracle - Trabalhando com duas transações

Artigo enviado por Wellington Fernandes do CarmoAnalista de Sistemas
Pessoal, na semana passada precisei usar mais um recurso interessante do oracle que novamente compartilho com vocês.

Eu tinha um bloco pl/sql que, apesar de ter alguns delete, insert e update no seu conteúdo, deveria fazer um commit apenas no final da execução, geralmente o processamento é feito em segundos. Acontece que o update, sem um motivo aparente, começou a demorar mais que o normal. Com isso logo veio a pergunta, porque não fazer um commit a cada comando? Considerando o contexto da rotina, o commit a cada comando não seria possível, exceto em um update. Mas como fazer um commit isolado no meio da transação? A resposta é pragma autonomous_transaction;

Funciona apenas dentro de uma procedure, você cria uma procedure e coloca a declaração pragma autonomous_transaction; pronto essa procedure será considerada uma transação a parte, execute o seu comando e execute o commit.

PS: Funciona desde o Oracle 8i

Exemplo

Begin

Insert ......
Delete ......

Chamada da procedure com a transação autônima.......esse pedaço terá um commit a parte

Etc.......

Commit;
End;

0 Comentários:

Postar um comentário

Assinar Postar comentários [Atom]

<< Página inicial