Alle metadata over de kolommen in Oracle Database is toegankelijk via een van de volgende weergaven.
gebruiker_tab_cols; -- Voor alle tafels die eigendom zijn van de gebruiker
all_tab_cols; -- Voor alle tabellen die toegankelijk zijn voor de gebruiker
dba_tab_cols; -- Voor alle tabellen in de database.
Dus, als u op zoek bent naar een kolom zoals ADD_TMS in de SCOTT.EMP-tabel en de kolom alleen toevoegt als deze niet bestaat, zou de PL/SQL-code in deze richting staan..
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;
/
Als u van plan bent dit als een script uit te voeren (geen onderdeel van een procedure), is de eenvoudigste manier om het commando alter in het script op te nemen en de fouten aan het einde van het script te zien, ervan uitgaande dat u geen Begin-End hebt voor het script..
Als u file1.sql
. heeftalter table t1 add col1 date;
alter table t1 add col2 date;
alter table t1 add col3 date;
En col2 is aanwezig, wanneer het script wordt uitgevoerd, zouden de andere twee kolommen aan de tabel worden toegevoegd en het logboek zou de fout tonen dat "col2" al bestaat, dus het zou goed moeten zijn.