Se puede acceder a todos los metadatos sobre las columnas en Oracle Database usando una de las siguientes vistas.
usuario_tab_cols; -- Para todas las tablas propiedad del usuario
todas_tab_cols; -- Para todas las tablas accesibles al usuario
dba_tab_cols; -- Para todas las tablas de la base de datos.
Entonces, si está buscando una columna como ADD_TMS en la tabla SCOTT.EMP y agrega la columna solo si no existe, el código PL/SQL estaría en esta línea.
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;
/
Si planea ejecutar esto como un script (no como parte de un procedimiento), la forma más fácil sería incluir el comando alter en el script y ver los errores al final del script, asumiendo que no tiene Begin-End para el guión..
Si tiene file1.sql
alter table t1 add col1 date;
alter table t1 add col2 date;
alter table t1 add col3 date;
Y col2 está presente, cuando se ejecuta el script, las otras dos columnas se agregarán a la tabla y el registro mostrará el error que dice que "col2" ya existe, por lo que debería estar bien.