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

Bagaimana cara memeriksa apakah ada kolom sebelum menambahkannya ke tabel yang ada di PL/SQL?

Semua metadata tentang kolom di Oracle Database dapat diakses menggunakan salah satu tampilan berikut.

pengguna_tab_kolom; -- Untuk semua tabel yang dimiliki oleh pengguna

semua_tab_kolom; -- Untuk semua tabel yang dapat diakses oleh pengguna

dba_tab_cols; -- Untuk semua tabel dalam Database.

Jadi, jika Anda mencari kolom seperti ADD_TMS di Tabel SCOTT.EMP dan menambahkan kolom hanya jika tidak ada, Kode PL/SQL akan berada di sepanjang baris ini..

DECLARE
  v_column_exists number := 0;  
BEGIN
  Select count(*) into v_column_exists
    from user_tab_cols
    where upper(column_name) = 'ADD_TMS'
      and upper(table_name) = 'EMP';
      --and owner = 'SCOTT --*might be required if you are using all/dba views

  if (v_column_exists = 0) then
      execute immediate 'alter table emp add (ADD_TMS date)';
  end if;
end;
/

Jika Anda berencana untuk menjalankan ini sebagai skrip (bukan bagian dari prosedur), cara termudah adalah memasukkan perintah alter dalam skrip dan melihat kesalahan di akhir skrip, dengan asumsi Anda tidak memiliki Begin-End untuk naskahnya..

Jika Anda memiliki file1.sql

alter table t1 add col1 date;
alter table t1 add col2 date;
alter table t1 add col3 date;

Dan col2 hadir, ketika skrip dijalankan, dua kolom lainnya akan ditambahkan ke tabel dan log akan menampilkan kesalahan yang mengatakan "col2" sudah ada, jadi Anda akan baik-baik saja.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah ukuran nama tabel/kolom/indeks di Oracle 11g atau 12c

  2. Fungsi Oracle Analytic - mengatur ulang klausa windowing

  3. menginstal Oracle Instantclient di Mac OS/X tanpa mengatur variabel lingkungan?

  4. Bagaimana cara mengembalikan ketika terjadi kesalahan saat menjalankan perintah sql loader?

  5. Cara bekerja dengan Fungsi tanggal di Oracle sql