我有一個程序發送電子郵件,並從其他功能和程序(主要用於發送警報和通知)調用此過程。程序發送郵件提醒
我面對的一個問題是,如果我們的郵件服務器關閉,然後調用函數或過程停止執行,我的意思是他們不做任何他們應該做的功能。我如何確保調用函數或過程,或者對於那些調用 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