Berikut adalah contoh sederhana yang melihat tabel dalam skema Anda sendiri:
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;
/
Untuk melihat tabel orang lain, Anda harus menggunakan dba_tables
saat Anda mulai mencoba, atau lebih mungkin all_tables
karena itu harus mengecualikan tabel yang tidak dapat Anda hitung, tetapi Anda juga harus menentukan pemiliknya di count
pernyataan.
Biasanya Anda ingin menggunakan variabel bind untuk menghindari injeksi SQL, tetapi Anda harus menentukan nama objek dengan rangkaian seperti ini.
Hal lain yang harus diwaspadai adalah kesalahan yang Anda miliki dalam kueri Anda, tetapi yang sekarang telah dihapus Egor dari pertanyaan. String SQL dinamis yang Anda jalankan tidak boleh diakhiri dengan titik koma (;
).