Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle DB:ईमेल ट्रिगर के लिए सुझाव

ट्रिगर में ईमेल भेजने का प्रयास करना आम तौर पर एक बुरा विचार होगा।

  1. यदि सिस्टम ईमेल भेजने में असमर्थ है (उदाहरण के लिए, क्योंकि एसएमटीपी सर्वर अस्थायी रूप से बंद है), ट्रिगर विफल हो जाएगा और ट्रिगरिंग स्टेटमेंट विफल हो जाएगा और वापस रोल किया जाएगा। ऐसा बहुत कम होता है कि आप वास्तव में अंतर्निहित लेन-देन को केवल इसलिए रोकना चाहेंगे क्योंकि आप एक ईमेल भेजने में सक्षम नहीं थे।
  2. ईमेल भेजना गैर-लेनदेन है। इसका मतलब है कि आप उन परिवर्तनों के लिए ईमेल भेजेंगे जो कभी प्रतिबद्ध नहीं होते। और आप कई बार ईमेल भेजेंगे क्योंकि Oracle रोलबैक करना चुनता है और INSERT के सभी या कुछ हिस्सों को फिर से निष्पादित करता है लेखन स्थिरता बनाए रखने के लिए कथन।

आपको आमतौर पर एक डेटाबेस नौकरी के साथ बेहतर सेवा दी जाएगी जो समय-समय पर उन पंक्तियों की तलाश करती है जिन्हें ईमेल भेजने, ईमेल भेजने और फिर तालिका को अपडेट करने की आवश्यकता होती है। आप या तो पुराने DBMS_JOB . का उपयोग कर सकते हैं पैकेज या नया और अधिक परिष्कृत DBMS_SCHEDULER पैकेट।

. की तर्ज पर कुछ
CREATE OR REPLACE PROCEDURE process_issues
AS
BEGIN
  FOR i IN (SELECT * 
              FROM your_table_name
             WHERE issue_added = 1
               AND email_sent  = 0)
  LOOP
    send_email( i.issue_id );
    UPDATE your_table_name
       SET email_sent = 1
     WHERE issue_id   = i.issue_id;
  END LOOP;
END;

जो तब हर 5 मिनट में चलने के लिए निर्धारित है (आप DBMS_SCHEDULER का भी उपयोग कर सकते हैं) पैकेज)

DECLARE
  l_jobno PLS_INTEGER:
BEGIN
  dbms_job.submit( l_jobno,
                   'BEGIN process_issues; END;',
                   sysdate + interval '5' minute,
                   'sysdate + interval ''5'' minute' );
  commit;
END;

आप UTL_MAIL पैकेज का उपयोग कर सकते हैं send_email . को लागू करने के लिए प्रक्रिया। आपको शायद केवल UTL_MAIL.SEND . पर कॉल करने की आवश्यकता है उपयुक्त मापदंडों के साथ (यह मानते हुए कि आपने अपना SMTP_OUT_SERVER कॉन्फ़िगर किया है पैरामीटर और आपके उपयोगकर्ता को UTL_MAIL . तक उचित पहुंच प्रदान की गई है पैकेज और एक एसीएल के लिए जो आपको उस एसएमटीपी सर्वर के साथ संचार करने की अनुमति देता है)।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JRuby और JDBC का उपयोग करके Oracle से कैसे जुड़ें?

  2. निर्देशिका में फाइलों की सूची खोजने में समस्या

  3. मानदंड क्वेरी माह और वर्ष फ़िल्टर

  4. ORA-01652:टेबलस्पेस सिस्टम में अस्थायी खंड को 128 तक बढ़ाने में असमर्थ:कैसे विस्तार करें?

  5. ऑरैकल में एक स्ट्रिंग के पहले तीन वर्णों को कैसे बदलें?