我有一个程序发送电子邮件,并从其他功能和程序(主要用于发送警报和通知)调用此过程。程序发送邮件提醒
我面对的一个问题是,如果我们的邮件服务器关闭,然后调用函数或过程停止执行,我的意思是他们不做任何他们应该做的功能。我如何确保调用函数或过程,或者对于那些调用 MailProcedure的客户端,即使在邮件服务器关闭时也应该执行其功能。
我该如何做到这一点? 任何帮助都非常明显。
邮件程序
CREATE OR REPLACE PROCEDURE MailProcedure(frm_id IN VARCHAR2, to_id IN VARCHAR2, subject IN VARCHAR2, body_text IN VARCHAR2)
AS
c utl_tcp.connection;
rc integer;
BEGIN
c := utl_tcp.open_connection('email_server', 25);
rc := utl_tcp.write_line(c, 'string');
rc := utl_tcp.write_line(c, 'from address');
rc := utl_tcp.write_line(c, 'to address');
rc := utl_tcp.write_line(c, 'Subject');
rc := utl_tcp.write_line(c, 'body');
utl_tcp.close_connection(c);
EXCEPTION
WHEN OTHERS
THEN
null;
END;
/
如果邮件服务器发生故障,您希望发生什么?你想让来电成功,并且不发送电子邮件吗?你想让电子邮件排队以备后用吗?还有别的吗?如果'MailProcedure'确实有'WHEN OTHERS THEN'异常处理程序,它是如何导致调用程序失败的?正如所写的,'MailProcedure'只会默默地失败,这可能不是最好的解决方案,但肯定不应该引发异常被调用者。 – 2012-07-29 18:03:07
如果邮件服务器关闭,则不会发送要发送的邮件,并希望排队以备后用。我怎样才能做到这一点?。谢谢 – user75ponic 2012-07-30 01:56:42