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

ओरेकल:डायनेमिक एसक्यूएल

यहां एक सरल उदाहरण दिया गया है जो आपके स्वयं के स्कीमा में तालिकाओं को देखता है:

set serveroutput on
declare
    c number;
begin
    for r in (select table_name from user_tables) loop
        execute immediate 'select count(*) from ' || r.table_name
            into c;
        dbms_output.put_line(r.table_name ||': '|| c);
    end loop;
end;
/

किसी और की टेबल देखने के लिए आपको dba_tables . का इस्तेमाल करना होगा जैसे ही आपने कोशिश करना शुरू किया, या अधिक संभावना है all_tables क्योंकि इससे उन तालिकाओं को बाहर कर देना चाहिए जिनसे आप गिनती नहीं कर सकते हैं, लेकिन आपको count में स्वामी को भी निर्दिष्ट करना होगा बयान।

आम तौर पर आप एसक्यूएल इंजेक्शन से बचने के लिए बाइंड वेरिएबल्स का उपयोग करना चाहते हैं, लेकिन आपको इस तरह के संयोजन के साथ ऑब्जेक्ट नाम निर्दिष्ट करना होगा।

कुछ और देखने के लिए एक गलती है जो आपने अपनी क्वेरी में की थी, लेकिन जिसे ईगोर ने अब प्रश्न से हटा दिया है। आपके द्वारा निष्पादित गतिशील SQL स्ट्रिंग को अर्धविराम द्वारा समाप्त नहीं किया जाना चाहिए (; )।




  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 खाली स्ट्रिंग्स को NULL मानता है जबकि SQL सर्वर नहीं करता है - यह सबसे अच्छा कैसे संभाला जाता है?

  2. Oracle में किसी अन्य के साथ संग्रहीत कार्यविधि को कॉल करें

  3. मेरे पास कथन में एक सम्मिलित है लेकिन अल्पविराम के साथ एक त्रुटि है और मैं इसे ठीक नहीं कर सकता

  4. Oracle क्लाइंट के विभिन्न संस्करणों पर cx_Oracle परिनियोजित करना

  5. Oracle सीखने से पहले आपको जो बातें पता होनी चाहिए