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

Oracle ड्रॉप टेबल यदि विकल्प मौजूद है

Oracle डाटाबेस में IF EXISTS . शामिल नहीं है खंड जो कुछ अन्य DBMS अपने DROP TABLE . में पेश करते हैं बयान। इसलिए, यदि हम किसी गैर-मौजूद तालिका को छोड़ने के प्रयास के परिणामस्वरूप होने वाली किसी भी ग़लत त्रुटि से बचना चाहते हैं, तो हमें थोड़ा अतिरिक्त काम करने की आवश्यकता है।

विकल्प 1:जांचें कि क्या तालिका मौजूद है

हम DBA_TABLES की जांच कर सकते हैं तालिका मौजूद है या नहीं यह देखने के लिए डेटा डिक्शनरी देखें। यह दृश्य डेटाबेस में सभी संबंधपरक तालिकाओं का वर्णन करता है। इसके कॉलम वही हैं जो ALL_TABLES . में हैं ।

हम इस तालिका को यह देखने के लिए देख सकते हैं कि क्या तालिका मौजूद है, उसके बाद ही DROP TABLE चलाएं बयान अगर ऐसा होता है।

उदाहरण:

DECLARE
tbl_count number;
sql_stmt long;

BEGIN
    SELECT COUNT(*) INTO tbl_count 
    FROM dba_tables
    WHERE owner = 'HR'
    AND table_name = 'T1';

    IF(tbl_count <> 0)
        THEN
        sql_stmt:='DROP TABLE T1';
        EXECUTE IMMEDIATE sql_stmt;
    END IF;
END;

परिणाम:

PL/SQL procedure successfully completed.

इस मामले में, t1 . नामक तालिका पहले से मौजूद था और गिरा दिया गया था।

अब, अगर हम वही कोड दोबारा चलाते हैं, तो हमें वही आउटपुट मिलता है:

PL/SQL procedure successfully completed.

कोई त्रुटि नहीं हुई, भले ही तालिका अब मौजूद नहीं है।

हालाँकि, यदि हम तालिका के अस्तित्व की जाँच किए बिना केवल तालिका को छोड़ने का प्रयास करते हैं, तो हमें एक त्रुटि मिलती है:

DROP TABLE T1;

परिणाम:

Error report -
ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"

विकल्प 2:त्रुटि के लिए परीक्षण करें

इसे करने का एक और तरीका है कि आप आगे बढ़ें और DROP TABLE . चलाएं कथन, और उसके बाद होने वाली किसी भी ORA-00942 त्रुटि को पकड़ें। विशेष रूप से, हम किसी भी SQLCODE -942 त्रुटि को पकड़ते हैं जो होती है।

उदाहरण:

BEGIN
   EXECUTE IMMEDIATE 'DROP TABLE t1';
EXCEPTION
   WHEN OTHERS THEN
      IF SQLCODE != -942 THEN
         RAISE;
      END IF;
END;

परिणाम:

PL/SQL procedure successfully completed.

मैंने उसे चलाया, भले ही T1 तालिका मौजूद नहीं थी। ORA-00942 त्रुटि पकड़ी गई और नियंत्रित की गई, इसलिए हमें कोई त्रुटि संदेश नहीं मिला।

यदि तालिका पहले से मौजूद होती, तो तालिका हटा दी जाती, और हमें वही आउटपुट दिखाई देता।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle क्रिटिकल पैच अपडेट - अक्टूबर 2020

  2. तालिका में मौजूदा पंक्तियों के साथ Oracle में डेटा प्रकार को कैसे संशोधित करें

  3. Oracle संग्रहीत कार्यविधि में varchar2 इनपुट का डिफ़ॉल्ट आकार क्या है, और क्या इसे बदला जा सकता है?

  4. ORA-28000:खाता लॉक हो गया है बार-बार त्रुटि हो रही है

  5. ORA-65139:XML मेटाडेटा फ़ाइल और डेटा फ़ाइल के बीच बेमेल