ओरेकल डेटाबेस में कॉलम के बारे में सभी मेटाडेटा निम्न में से किसी एक दृश्य का उपयोग करके सुलभ है।
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 column_name = 'ADD_TMS'
and 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 है, तो
और जब स्क्रिप्ट चलाया जाता है, तो col2 मौजूद है, अन्य दो कॉलम तालिका में जोड़े जाएंगे और लॉग "col2" पहले से मौजूद है, यह त्रुटि दिखाएगा, इसलिए आपको ठीक होना चाहिए।
स्रोत
2011-06-15 02:12:25
कम अनुभवी ओरेकल लोगों के लिए, यदि आप कॉलम और टेबल नाम की तुलना के दोनों पक्षों को कास्ट करते हैं तो यह आपको कुछ परेशानी बचा सकता है: 'निचला (स्तंभ_नाम) = निचला (' mycol ') ' – mastaBlasta