Oracle Database'deki sütunlarla ilgili tüm meta veriler, aşağıdaki görünümlerden biri kullanılarak erişilebilir.
user_tab_cols; - Kullanıcının sahip olduğu tüm tablolar için
all_tab_cols; - Kullanıcının erişebileceği tüm tablolar için
dba_tab_cols; - Veritabanındaki tüm tablolar için. Eğer SCOTT.EMP Tablo ADD_TMS gibi bir sütun arayan ve onu yok yalnızca sütun eklemek eğer
Yani, PL/SQL Kodu .. bu satırlar boyunca olurdu
DECLARE
v_column_exists number := 0;
BEGIN
Select count(*) into v_column_exists
from user_tab_cols
where column_name = 'ADD_TMS'
and 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;
/
Bunu bir komut dosyası olarak çalıştırmayı planlıyorsanız (bir prosedürün parçası değil), komut için alter komutunu dahil etmenin en kolay yolu, Başlama Sonu almadığınızı varsayarak, komut dosyasının sonunda hataları görmektir. senaryo ..
Eğer
file1.sql varsa
Komut dosyası çalıştırıldığında, diğer iki sütun tabloya eklenir ve günlüğe "col2" yazılması hatası gösterilirdi, bu yüzden tamam olmanız gerekir.
Daha az deneyimli Oracle kullanıcıları için, her iki tarafı da sütun ve tablo adı karşılaştırmaları yaparsanız bazı sorunlardan kurtulabilir: 'lower (column_name) = lower ('mycol')' – mastaBlasta