Tutti i metadati relativi alle colonne in Oracle Database sono accessibili utilizzando una delle seguenti viste.
user_tab_cols; -- Per tutte le tabelle di proprietà dell'utente
all_tab_cols; -- Per tutte le tabelle accessibili all'utente
dba_tab_cols; -- Per tutte le tabelle nel database.
Quindi, se stai cercando una colonna come ADD_TMS nella tabella SCOTT.EMP e aggiungi la colonna solo se non esiste, il codice PL/SQL sarebbe in questa direzione.
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;
/
Se stai pianificando di eseguirlo come script (non parte di una procedura), il modo più semplice sarebbe includere il comando alter nello script e vedere gli errori alla fine dello script, supponendo che tu non abbia Begin-End per lo script..
Se hai file1.sql
alter table t1 add col1 date;
alter table t1 add col2 date;
alter table t1 add col3 date;
E col2 è presente, quando lo script viene eseguito, le altre due colonne verrebbero aggiunte alla tabella e il registro mostrerebbe l'errore che dice che "col2" esiste già, quindi dovresti essere a posto.