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

पीएल/एसक्यूएल में मौजूदा तालिका में जोड़ने से पहले कॉलम मौजूद है या नहीं, इसकी जांच कैसे करें?

Oracle डेटाबेस में कॉलम के बारे में सभी मेटाडेटा निम्न में से किसी एक दृश्य का उपयोग करके पहुँचा जा सकता है।

user_tab_cols; -- उपयोगकर्ता के स्वामित्व वाली सभी तालिकाओं के लिए

all_tab_cols; -- उपयोगकर्ता के लिए सुलभ सभी तालिकाओं के लिए

dba_tab_cols; -- डेटाबेस में सभी तालिकाओं के लिए।

इसलिए, यदि आप SCOTT.EMP तालिका में ADD_TMS जैसे कॉलम की तलाश कर रहे हैं और कॉलम केवल तभी जोड़ें जब वह मौजूद न हो, तो PL/SQL कोड इन पंक्तियों के साथ होगा..

DECLARE
  v_column_exists number := 0;  
BEGIN
  Select count(*) into v_column_exists
    from user_tab_cols
    where upper(column_name) = 'ADD_TMS'
      and upper(table_name) = 'EMP';
      --and owner = 'SCOTT --*might be required if you are using all/dba views

  if (v_column_exists = 0) then
      execute immediate 'alter table emp add (ADD_TMS date)';
  end if;
end;
/

यदि आप इसे एक स्क्रिप्ट के रूप में चलाने की योजना बना रहे हैं (प्रक्रिया का हिस्सा नहीं), तो सबसे आसान तरीका यह होगा कि स्क्रिप्ट में परिवर्तन कमांड को शामिल करें और स्क्रिप्ट के अंत में त्रुटियों को देखें, यह मानते हुए कि आपके पास इसके लिए कोई शुरुआत-अंत नहीं है। स्क्रिप्ट..

अगर आपके पास file1.sql

. है
alter table t1 add col1 date;
alter table t1 add col2 date;
alter table t1 add col3 date;

और col2 मौजूद है, जब स्क्रिप्ट चलाई जाती है, तो अन्य दो कॉलम तालिका में जोड़ दिए जाएंगे और लॉग यह कहते हुए त्रुटि दिखाएगा कि "col2" पहले से मौजूद है, इसलिए आपको ठीक होना चाहिए।



  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 में नेगेटिव वैल्यू को पॉजिटिव में कैसे बदलें?

  2. Oracle डायनेमिक पिवोटिंग

  3. Oracle - sql डेवलपर से स्क्रिप्ट कैसे उत्पन्न करें

  4. एयरफ्लो को ओरेकल डेटाबेस से कैसे कनेक्ट करें

  5. विभिन्न डीबीएमएस के बीच डेटा माइग्रेशन