Surement très simple : trigger Oracle
Bonjour, ce code-ci fonctionne parfaitement :
Je voudrais modifier le trigger pour qu'il n'evoie un mail qu'une fois par jour. J'ai donc crée une table qui contient un compteur (number_of_errors) et un champ date.
Je voudrais donc faire un if qui si la derniere entrée a comme date la date d'aujourd'hui incrémente le compteur (update) et sinon rajoute une entrée.
J'ai testé plein de truc mais sans résultats... merci de m'aider
Code:
1 2 3 4 5 6 7 8
|
CREATE OR REPLACE TRIGGER mail_alerter
BEFORE INSERT ON BPM_LOG_DETAIL
FOR EACH ROW
WHEN (new.entry between 'F' and 'Fatal error*')
BEGIN
sendmail('RLPR','****@****.com',:new.entry);
END; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| CREATE OR REPLACE PROCEDURE sendmail (sender IN VARCHAR2,
recipient IN VARCHAR2,
message IN VARCHAR2)
IS
mailhost VARCHAR2(50) := '************';
mail_conn utl_smtp.connection;
BEGIN
mail_conn := utl_smtp.open_connection(mailhost, 25);
utl_smtp.helo(mail_conn, mailhost);
utl_smtp.mail(mail_conn, sender);
utl_smtp.rcpt(mail_conn, recipient);
utl_smtp.open_data(mail_conn);
utl_smtp.write_data(mail_conn, TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS'));
utl_smtp.write_data(mail_conn,' : ');
utl_smtp.write_data(mail_conn, message);
utl_smtp.close_data(mail_conn);
utl_smtp.quit(mail_conn);
END; |