Всички метаданни за колоните в Oracle Database са достъпни чрез един от следните изгледи.
user_tab_cols; -- За всички таблици, собственост на потребителя
all_tab_cols; -- За всички таблици, достъпни за потребителя
dba_tab_cols; -- За всички таблици в базата данни.
Така че, ако търсите колона като ADD_TMS в таблицата SCOTT.EMP и добавяте колоната само ако не съществува, PL/SQL кодът ще бъде по тези редове..
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;
/
Ако планирате да стартирате това като скрипт (не част от процедура), най-лесният начин би бил да включите командата alter в скрипта и да видите грешките в края на скрипта, като приемем, че нямате начало-край за сценария..
Ако имате file1.sql
alter table t1 add col1 date;
alter table t1 add col2 date;
alter table t1 add col3 date;
И col2 присъства, когато скриптът се стартира, другите две колони ще бъдат добавени към таблицата и регистрационният файл ще покаже грешката, която казва, че „col2“ вече съществува, така че трябва да сте добре.