Olá pessoal,
Tenho 2 procedures que a 1a chama a 2a e volta para a primeira continuar
o trabalho dela. Porém a 2a grava um log. O que eu quero é dar commit na
2a sem afetar a transação da 1a procedure.
Exemplo:
Proc 1
Insert tabela1
Delete tabela2
Chama proc2
update tabela3
Boas,
na procedure que é chamada dentro da primeira, adicione após a keyword IS da
assinatura a seguinte instrução:
PRAGMA AUTONOMOUS_TRANSACTION;
Dessa forma, quando a segunda procedure for chamada será criado uma
transação exclusivamente para ela, que não afetará na transação da primeira
Como se fosse uma tabela de log, onde ela devesse ser alimentada para
documentar a ocorrência, fosse ela bem sucedida ou não?
Talvez fosse o caso de manter isso em memória e só persistir ao final do
processo.
Fabio Santos escreveu:
Olá pessoal,
Tenho 2 procedures que a 1a chama a 2a e volta
A SOFTTEK
Enviada em: quarta-feira, 21 de março de 2007 10:39
Para: oracle_br@yahoogrupos.com.br
Assunto: RE: [oracle_br] Commit apenas em um pedaço
Fábio,
nesse caso vc precisa obrigatoriamente colocar um controle transacional
independente pra cada proc, ou seja, ficaria algo assim:
Proc 1
Insert
:47
To: oracle_br@yahoogrupos.com.br
Subject: RES: [oracle_br] Commit apenas em um pedaço
Olá Fernandes,
Pois é. Isso é o venho fazendo. Mas, é exatamente o que eu não quero
fazer.
Gostaria de ver se tem como eu resolver do modo que expliquei abaixo.
Obrigado.
-Mensagem original-
De
: [oracle_br] Commit apenas em um pedaço
Olá pessoal,
Tenho 2 procedures que a 1a chama a 2a e volta para a primeira continuar
o trabalho dela. Porém a 2a grava um log. O que eu quero é dar commit na
2a sem afetar a transação da 1a procedure.
Exemplo:
Proc 1
Insert tabela1
Delete tabela2
Chama
2007 10:48
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Commit apenas em um pedaço
Boas,
na procedure que é chamada dentro da primeira, adicione após a keyword
IS da
assinatura a seguinte instrução:
PRAGMA AUTONOMOUS_TRANSACTION;
Dessa forma, quando a segunda procedure for chamada