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