José,
 
Pense na possibilidade então, de automatizar o processo também em conjunto com 
Triggers de DDL ou de Esquema, se for o caso.
 
Sucesso,
 
Atenciosamente,

Anderson Haertel Rodrigues
Administrador de Banco de Dados
Florianópolis/SC - [EMAIL PROTECTED] 

-----Mensagem original-----
De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] nome de jjcamposfib
Enviada em: terça-feira, 8 de agosto de 2006 09:31
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: RES: [oracle_br] Dúvida em Trigger


Olá Anderson,

A implementação utilizada no link que vc passou é muito legal, e é
também uma das soluções que havia pensado, mas ela tem um problema,
quando uma tabela mudar eu, no meu modelo, não precisaria rodar
scripts de criação de triggers e com esse modelo que você passou isso
deve ser feito toda vez que a estrutura de uma tabela muda.

O script do cara é para criar triggers dinamicamente e não para
executar uma trigger dinamicamente.

Meu problema é mais para baixo ( rsrs ), o sistema cria
automaticamente tabelas e campos por isso preciso de algo muito dinâmico.

Mas de qualquer forma muito obrigado, há nesse script algo que ainda
não havia utilizado, que é sobrecarga de métodos em um package, já me
ajuda com outras coisas.

Sei que o custo disso que estou querendo é muito alto para o SGBD, mas
não chega a ser um problema.

[]´s

Jorge Campos
Analista de Sistemas
Salvador-Bahia


--- Em oracle_br@yahoogrupos.com.br, "Anderson Haertel Rodrigues -
FLN" <[EMAIL PROTECTED]> escreveu
>
> Bom dia,
>  
> Jorge, segue exemplo retirado do Asktom (leia o mesmo também antes
de implementar, tem algumas dicas interessantes sobre o uso de :old e
:new):
>
http://asktom.oracle.com/pls/ask/f?p=4950:8:7408046884167118251::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:59412348055
>  
> Sucesso,
> Atenciosamente,
> 
> Anderson Haertel Rodrigues
> Administrador de Banco de Dados
> Florianópolis/SC - [EMAIL PROTECTED] 
> 
>  
> 
> -----Mensagem original-----
> De: oracle_br@yahoogrupos.com.br
[mailto:[EMAIL PROTECTED] nome de jjcamposfib
> Enviada em: terça-feira, 8 de agosto de 2006 08:48
> Para: oracle_br@yahoogrupos.com.br
> Assunto: [oracle_br] Dúvida em Trigger
> 
> 
> Olá pessoas,
> 
> estou trabalhando em um sistema de auditoria dinâmica através de
> trigger, onde o código de todas as triggers para cada tabela auditada
> será exatamente igual. Meu problema é que não consigo pegar os valores
> que estão nas referências :NEW ou :OLD dinamicamente dentro de uma
> trigger.
> 
> Já tentei de diversas formas, select into, execute imeddiante, usando
> o dicionário de dados do oracle e nada!!! Alguém saberia como posso
> pegar esses valores??
> 
> segue alguns exemplos que tentei:
> 
> CREATE OR REPLACE TRIGGER TRG_AIUD_LOGTABELA
> AFTER INSERT OR UPDATE OR DELETE ON TABELA FOR EACH ROW
> 
> declare
> 
> varTexto VARCHAR2(200);
> 
> begin
> 
> /*Loop para pegar todos os campos da tabela*/
> FOR rs IN ( SELECT * FROM all_tab_columns WHERE table_name = 'TABELA'
> AND owner = 'ESQUEMA' ) LOOP
> 
> /*Retorna sempre nulo*/
> EXECUTE IMMEDIATE 'select to_char( :old.'||rs.column_name||' ) from
> dual' INTO varTexto;
> 
> /*Não funciona, dá um erro prá lá de estranho*/
> EXECUTE IMMEDIATE 'begin varTexto:= :old.'||rs.column_name||'; end;';
> 
> /*aqui tem alguns códigos com inserção do valor da váriável em uma
> tabela de auditoria*/
> 
> End loop;
> 
> end;
> 
> Lembrando que não tentei as duas ao mesmo tempo, foi uma e depois a
> outra, nenhuma das duas funcionou como eu esperava.
> 
> Preciso disso porque não irei criar uma trigger específica para cada
> tabela, eu estou criando um modelo que é um dicionário de dados que
> armazenará as informações. Por isso preciso saber os campos das
> tabelas dinamicamente para pegar seus valores novos ou antigos (:NEW
> ou :OLD) dentro da trigger sem precisar saber quais campos a tabela
> possui.
> 
> Grato a todos,
> 
> Jorge Campos
> Analista de Sistemas.
> 
> 
> 
> 
>  
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




 



[As partes desta mensagem que não continham texto foram removidas]



--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a