我在很多情况下都会这样做:
... do some database action ...
COMMIT;
if ( commit succeeded without error ) {
send an email
}
是否有任何简单的方法可以在 Oracle 11g 中自动以事务方式执行此操作?
我能想到的唯一方法是让事务将电子邮件插入表中,并有一个定期唤醒以检查表并发送其中的任何电子邮件的作业。
最佳答案
您可以使用DBMS_JOB
包。当您使用DBMS_JOB
提交作业时,该作业将在触发事务提交后才会运行。您的作业实际上在提交发生后几秒钟内异步发送电子邮件。
CREATE PROCEDURE do_something
AS
l_jobno NUMBER;
BEGIN
<<do something>>
dbms_job.submit( l_jobno,
'BEGIN send_email; END;',
sysdate + interval '5' second );
commit;
END;
CREATE PROCEDURE send_email
AS
BEGIN
<<send email>>
END;
关于email - 是否可以在 Oracle 中以事务方式发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9627337/