यहां एक सरल उदाहरण दिया गया है जो आपके स्वयं के स्कीमा में तालिकाओं को देखता है:
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 स्ट्रिंग को अर्धविराम द्वारा समाप्त नहीं किया जाना चाहिए (;
)।