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

DBMS_SCHEDULER.DROP_JOB केवल तभी मौजूद है

अपवाद प्रबंधन के लिए आप दो मुख्य पैटर्न लागू कर सकते हैं; "आप छलांग लगाने से पहले देखें" (एलबीवाईएल) और "अनुमति की तुलना में क्षमा मांगना आसान है" (ईएएफपी)। LBYL यह देखने के लिए जाँच करने की वकालत करेगा कि क्या नौकरी छोड़ने का प्रयास करने से पहले यह मौजूद है। ईएएफपी में नौकरी छोड़ने का प्रयास करना और फिर उस विशिष्ट त्रुटि को पकड़ना और अनदेखा करना शामिल होगा, यदि ऐसा होता है।

यदि आप एलबीवाईएल लागू करते हैं तो आप सिस्टम दृश्य को क्वेरी कर सकते हैं USER_SCHEDULER_JOBS यह देखने के लिए कि क्या आपकी नौकरी मौजूद है। अगर ऐसा होता है, तो उसे छोड़ दें।

declare
   l_job_exists number;
begin
   select count(*) into l_job_exists
     from user_scheduler_jobs
    where job_name = 'STATISTICS_COLUMNS_JOB'
          ;

   if l_job_exists = 1 then
      dbms_scheduler.drop_job(job_name => 'STATISTICS_COLUMNS_JOB');
   end if;
end;

ईएएफपी के लिए यह थोड़ा अलग है; अपना खुद का अपवाद परिभाषित करें आंतरिक रूप से परिभाषित अपवाद का नामकरण द्वारा और उस त्रुटि कोड के साथ इसे तुरंत चालू करना जिसे आप पकड़ना चाहते हैं। अगर वह त्रुटि उठाई जाती है, तो कुछ न करें।

declare
   job_doesnt_exist EXCEPTION;
   PRAGMA EXCEPTION_INIT( job_doesnt_exist, -27475 );
begin
   dbms_scheduler.drop_job(job_name => 'STATISTICS_COLUMNS_JOB');
exception when job_doesnt_exist then
   null;
end;

इस दूसरी विधि के बारे में दो बातें ध्यान देने योग्य हैं।

  1. मैं केवल हूं इस विशिष्ट अपवाद द्वारा उठाई गई त्रुटि को पकड़ना। EXCEPTION WHEN OTHERS . का उपयोग करके एक ही चीज़ प्राप्त करना संभव होगा लेकिन मैं विरुद्ध . की अत्यधिक अनुशंसा करता हूं यह कर रहा हूं।

    यदि आप अपवाद को संभालते हैं तो आपको पता होना चाहिए कि आप इसके साथ क्या करने जा रहे हैं। यह संभावना नहीं है कि आपके पास OTHERS . का उपयोग करके हर एक Oracle अपवाद को ठीक से संभालने की क्षमता है और यदि आप ऐसा करते हैं तो आपको शायद उन्हें कहीं लॉग इन करना चाहिए जहां उन्हें देखा जाएगा। Oracle के अपवादों से बचने और उन्हें संभालने के लिए दिशानिर्देश<से उद्धृत करने के लिए /ए> :

  2. Oracle का अपवाद प्रसार आंतरिक ब्लॉक से बाहरी ब्लॉक तक काम करता है इसलिए त्रुटि का मूल कारण पहला अपवाद होगा।




  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. क्या Oracle के पास SQL ​​​​सर्वर के तालिका चर के बराबर है?

  3. plsql कोड से नए टैब में url पर रीडायरेक्ट करें

  4. ORA-12704:कैरेक्टर सेट मिसमैच

  5. DELETE RESTRICT त्रुटि पर विदेशी कुंजी - Oracle