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

कैसे Oracle में एक स्कीमा से तालिका की सूची ड्रॉप करने के लिए?

डेटा डिक्शनरी से हटकर डायनेमिक SQL का उपयोग करें।

begin
     for trec in ( select table_name
                   from user_tables
                   where table_name like 'PREFIX\_%' escape `\' )
     loop
         dbms_output.put_line('dropping table ' || trec.table_name);
         execute immediate 'drop table '||trec.table_name;
     end loop;
end;

LIKE क्लॉज के साथ सटीक होना एक अच्छा विचार है; escape . का उपयोग करके कीवर्ड को यह सुनिश्चित करने के लिए कि अंडरस्कोर को वाइल्डकार्ड के रूप में नहीं माना जाता है। वैकल्पिक रूप से उपयोग करें substr(table_name, 1, 7) = 'PREFIX_' .

गलत तालिका को छोड़ना कोई आपदा नहीं है बशर्ते आप 10g या बाद के संस्करण पर काम कर रहे हों और रीसायकल बिन सक्षम है , लेकिन यह अभी भी बेहतर नहीं है। जाहिर है आप उत्पादन में इस तरह कोड नहीं चलाएंगे, लेकिन आप ड्रॉप स्टेटमेंट की स्क्रिप्ट बनाने के लिए सिद्धांत का उपयोग करेंगे।

उपरोक्त कोड निर्भरताओं को संभाल नहीं करता है। यदि आपके पास उपसर्ग वाली तालिकाओं को संदर्भित करने वाली विदेशी कुंजियाँ हैं और आप तालिकाओं को छोड़ने के लिए बाध्य करना चाहते हैं तो इस अतिरिक्त तर्क का उपयोग करें:

     execute immediate 'drop table '|| trec.table_name ||' cascade constraint';

यह विदेशी कुंजी बाधाओं को छोड़ देता है लेकिन (पूर्व में) निर्भर तालिकाओं को छोड़ देता है।



  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. ORA-02267:स्तंभ प्रकार संदर्भित स्तंभ प्रकार के साथ असंगत है

  3. Oracle में क्लॉब कॉलम अपडेट करें

  4. एक्स इनपुट पैरामीटर के साथ पीएल/एसक्यूएल प्रक्रिया कैसे लिखें और एक्स पैरामीटर के इनपुट/आउटपुट को संयुक्त करें

  5. समूह द्वारा फ़ील्ड के लिए अनुक्रमणिका बनाना?