Todos os metadados sobre as colunas no Oracle Database podem ser acessados usando uma das visualizações a seguir.
user_tab_cols; -- Para todas as tabelas de propriedade do usuário
all_tab_cols; -- Para todas as tabelas acessíveis ao usuário
dba_tab_cols; -- Para todas as tabelas do banco de dados.
Então, se você estiver procurando por uma coluna como ADD_TMS na tabela SCOTT.EMP e adicionar a coluna apenas se ela não existir, o código PL/SQL seria nessa linha.
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 você planeja executar isso como um script (não parte de um procedimento), a maneira mais fácil seria incluir o comando alter no script e ver os erros no final do script, supondo que você não tenha Begin-End para o roteiro..
Se você tiver arquivo1.sql
alter table t1 add col1 date;
alter table t1 add col2 date;
alter table t1 add col3 date;
E col2 está presente, quando o script é executado, as outras duas colunas seriam adicionadas à tabela e o log mostraria o erro dizendo que "col2" já existe, então você deve estar bem.