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

Oracle संग्रहीत कार्यविधि में त्रुटि संदेश लॉग करें

यदि आप अपना स्वयं का लॉगिंग रोल करने और किसी तालिका में लॉग इन करने का निर्णय लेते हैं तो आप स्वायत्त लेन-देन पर जा सकते हैं रास्ता।

एक स्वायत्त लेन-देन एक ऐसा लेनदेन है जो आपके वर्तमान लेनदेन से स्वतंत्र रूप से किया जा सकता है।

इस तरह आप अपनी संग्रहीत प्रक्रिया या बैच प्रक्रिया पैरेंट लेनदेन की सफलता या विफलता से स्वतंत्र रूप से अपनी लॉग तालिका में अपनी इच्छित सभी जानकारी लॉग और प्रतिबद्ध कर सकते हैं।

CREATE OR REPLACE PROCEDURE "SP_LOG" (
    P_MESSAGE_TEXT VARCHAR2
) IS
  pragma autonomous_transaction;
BEGIN

    DBMS_OUTPUT.PUT_LINE(P_MESSAGE_TEXT);

    INSERT INTO PROCESSING_LOG (
        MESSAGE_DATE,
        MESSAGE_TEXT
    ) VALUES (
        SYSDATE,
        P_MESSAGE_TEXT
    );
    COMMIT;

END;
/

फिर यदि आप इसे इस तरह कहते हैं, तब भी आप अपनी लॉग टेबल के लिए प्रतिबद्ध संदेश प्राप्त कर सकते हैं, भले ही आपकी विफलता हो और अपना लेन-देन वापस ले लें:

BEGIN
  SP_LOG('Starting task 1 of 2');

  ... code for task 1 ...

  SP_LOG('Starting task 2 of 2');

  ... code for task 2 ...

  SP_LOG('Ending Tasks');

  ... determine success or failure of process and commit or rollback ... 

 ROLLBACK;
END;
/

आप इसे अपवादों के साथ व्यवस्थित करना चाह सकते हैं जो आपके कोड के लिए समझ में आता है, लेकिन यह सामान्य विचार है, SP_LOG को कॉल में लिखा गया डेटा बना रहता है, लेकिन मूल लेनदेन को अभी भी वापस लाया जा सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं इस क्वेरी को ऑरैकल में कैसे कर सकता हूं?

  2. ओरेकल में INITCAP () फ़ंक्शन

  3. PL/SQL और SQL में VARCHAR2 का अधिकतम आकार क्या है?

  4. ओरेकल के साथ रेल पर रूबी को कैसे कॉन्फ़िगर करें?

  5. Oracle SQL क्रॉस टैब क्वेरी