Alle metadata om kolonnerne i Oracle Database er tilgængelige ved hjælp af en af følgende visninger.
user_tab_cols; -- For alle tabeller, der ejes af brugeren
alle_faneblade; -- For alle tabeller, der er tilgængelige for brugeren
dba_tab_cols; -- For alle tabeller i databasen.
Så hvis du leder efter en kolonne som ADD_TMS i SCOTT.EMP Table og kun tilføje kolonnen, hvis den ikke eksisterer, ville PL/SQL-koden være på denne måde.
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;
/
Hvis du planlægger at køre dette som et script (ikke en del af en procedure), ville den nemmeste måde være at inkludere alter-kommandoen i scriptet og se fejlene i slutningen af scriptet, forudsat at du ikke har nogen Start-End for manuskriptet..
Hvis du har file1.sql
alter table t1 add col1 date;
alter table t1 add col2 date;
alter table t1 add col3 date;
Og col2 er til stede, når scriptet køres, vil de to andre kolonner blive tilføjet til tabellen, og loggen vil vise fejlen, der siger "col2" eksisterer allerede, så du burde være okay.