Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle:SQL Dinamis

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 (; ).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konsolidasi beberapa pemicu Oracle. Adakah dampak kinerja?

  2. Bagaimana cara mengetahui indeks yang baik?

  3. Ganti CHAR dengan VARCHAR2

  4. Mengapa penyebaran xcopy ODP.NET 11 tidak berfungsi pada mesin dengan Oracle DB 10 diinstal?

  5. Nonaktifkan CAST AS untuk mengoptimalkan kueri di Entity Framework