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

तालिका बनाने के 2 तरीके यदि यह Oracle में पहले से मौजूद नहीं है

Oracle डेटाबेस में IF NOT EXISTS . शामिल नहीं है इसके CREATE TABLE . के साथ क्लॉज कथन, जैसे कुछ अन्य DBMS करते हैं।

इसलिए, यदि हम पहले से उपयोग किए जा रहे तालिका नाम के कारण कोई त्रुटि उत्पन्न नहीं करना चाहते हैं, तो हमें तालिका के अस्तित्व की जांच के लिए अन्य विधियों का उपयोग करने की आवश्यकता है।

विकल्प 1:DBA_TABLES चेक करें देखें

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

हम यह देखने के लिए इस तालिका की जांच कर सकते हैं कि क्या तालिका पहले से मौजूद है, उसके बाद ही CREATE 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:='
        CREATE TABLE T1 (
            c1 number(6,0),
            c2 varchar2(10)
        )';
        EXECUTE IMMEDIATE sql_stmt;
    END IF;
END;

परिणाम:

PL/SQL procedure successfully completed.

इस मामले में, तालिका इसलिए बनाई गई क्योंकि किसी मौजूदा तालिका का नाम t1 . नहीं था ।

अब, यदि हम फिर से तालिका बनाने का प्रयास करते हैं, तो हमें वही आउटपुट मिलेगा जो PL/SQL प्रक्रिया सफलतापूर्वक पूरा हुआ, और कोई त्रुटि नहीं होगी।

हालांकि, अगर हम पहले इसकी मौजूदगी की जांच किए बिना टेबल बनाने की कोशिश करते हैं, तो हमें एक त्रुटि मिलती है:

CREATE TABLE T1 (
    c1 number(6,0),
    c2 varchar2(10)
);

परिणाम:

Error report -
ORA-00955: name is already used by an existing object
00955. 00000 -  "name is already used by an existing object"

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

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

उदाहरण:

DECLARE
sql_stmt long;

BEGIN
    sql_stmt:='
    CREATE TABLE T1 (
        c1 number(6,0),
        c2 varchar2(10)
    )';
    EXECUTE IMMEDIATE sql_stmt;

    EXCEPTION
        WHEN OTHERS THEN
            IF SQLCODE = -955 THEN
                NULL;
            ELSE
                RAISE;
            END IF;
END;

परिणाम:

PL/SQL procedure successfully completed.

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

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


  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. R12.2 ऑनलाइन पैचिंग चक्र सारांश

  3. VARCHAR2 कॉलम को अधिक लंबाई के साथ परिभाषित करने का प्रभाव

  4. वी$एसक्यूएल_SHARED_CURSOR TOP_LEVEL_RPI_CURSOR

  5. Oracle में माइनस/प्लस साइन के साथ नंबर कैसे फॉर्मेट करें?