quarta-feira, abril 25, 2012

Autonomous Transactions - ORACLE

HI,

Ontem precisei criar uma trigger que de acordo com determinada condição iria provocar um raise_application_error e com isso abortar o processo de um sistema web adquirido aqui na empresa que trabalho.

Como a mensagem de erro desse raise não estava sendo exibida para o usuário, resolvi criar uma tabela de log para gravar um registro quando acontecesse esse erro. Percebi que mesmo desabilitando o comando raise, estava provocando erro na aplicação web, então deduzi que seria o COMMIT para salvar os dados dessa tabela de log.

Fui pesquisar como realizar esse commit sem afetar a transação da aplicação web. Foi aí que descobrir esse tal de Autonomous Transactions.

Autonomous Transactions
http://www.oracle-base.com/articles/misc/autonomous-transactions.php

Implementei uma procedure para gravar o registro e ficou na medida usando esse recurso de transação autônoma.

Para maiores informações tem esse site aqui.
http://pscoliveira.blogspot.com.br/2007/11/autonomous-transactions.html


Tem uma dica aqui de como criar a sua exceção
http://stackoverflow.com/questions/6020450/oracle-pl-sql-raise-user-defined-exception-with-custom-sqlerrm



Fiquem na Paz!!!!


PS: De acordo com contador do blog esse é o Post de número 200. Ebaaaaaaaaaa!!!!!!


Nenhum comentário: