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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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;