Pular para o conteúdo
  • Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 17 anos, 1 mês atrás por marcelomirandola.
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #85193
    Ramaral
    Participante

      Tenho uma tabela de auditoria e cada vez que ocorre um evento, o mesmo e registrado na tabela. Preciso criar uma trigger que a cada inserção, gere um email para um grupo específico e coloque no mesmo os dados que foram inseridos.

      Pensei em uma procedure sendo chamada por uma trigger, mas queria ver se implementava algo mais simples, até porque irei utilizar depois para outros schemas e outras tabelas.

      Alguém tem algo do tipo….

      #85194
      marcelomirandola
      Participante

        Bom dia.
        Justamente pelo fato de você reutilizar, o certo seria você criar uma procedure com os parametros de entrada e depois chamá-la através de triggers.

        Eu uso esta aqui:

        CREATE OR REPLACE PROCEDURE SEND_MAIL (origem in
        varchar2,
        destino in varchar2,
        assunto in varchar2,
        mensagem in varchar2) is
        conn utl_smtp.connection;
        mailmsg varchar2(2000);
        begin
        conn := utl_smtp.open_connection(‘IP’,PORTA);
        utl_smtp.helo(conn, ‘DOMINIO’);
        utl_smtp.mail(conn, destino);
        utl_smtp.rcpt(conn, destino);
        utl_smtp.open_data(conn);
        utl_smtp.write_data(conn,’From: ‘||origem||”||utl_tcp.CRLF);
        utl_smtp.write_data(conn,’Subject: ‘);
        utl_smtp.write_raw_data(conn,utl_raw.cast_to_raw(assunto||utl_tcp.CRLF));
        utl_smtp.write_data(conn, ‘MIME-version: 1.0’ ||utl_tcp.CRLF);
        utl_smtp.write_data(conn, ‘Content-Type:text/html; charset=iso-8859-1’||utl_tcp.CRLF);
        utl_smtp.write_data(conn, ‘Content-Transfer-Encoding: 8bit’||utl_tcp.CRLF);
        utl_smtp.write_raw_data(conn,utl_raw.cast_to_raw(utl_tcp.CRLF||mensagem));
        utl_smtp.close_data(conn);
        utl_smtp.quit(conn);
        EXCEPTION WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
        begin
        utl_smtp.quit(conn);
        exception
        WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
        null;
        end;
        send_mail (‘erro’,’DESTINO-DO-ERRO’,’Erro no envio para ‘||destino,mensagem);
        WHEN OTHERS THEN
        send_mail (‘erro’,’DESTINO-DO-ERRO’,’Erro no envio para’||destino,mensagem);
        end;

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.