Все метаданные о столбцах в базе данных Oracle доступны с помощью одного из следующих представлений:
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» уже существует, поэтому с вами все должно быть в порядке.