Se puede acceder a todos los metadatos sobre las columnas en Oracle Database utilizando una de las siguientes vistas.
user_tab_cols; - Para todas las tablas propiedad del usuario
all_tab_cols; - Para todas las tablas accesibles para el usuario
dba_tab_cols; - Para todas las tablas en la Base de datos.
lo tanto, si usted está buscando una columna como ADD_TMS en SCOTT.EMP tabla y agregar la columna sólo si no existe, el código PL/SQL sería lo largo de estas líneas ..
DECLARE
v_column_exists number := 0;
BEGIN
Select count(*) into v_column_exists
from user_tab_cols
where column_name = 'ADD_TMS'
and 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 manera más fácil sería incluir el comando alter en el script y ver los errores al final del script, suponiendo que no tiene Begin-End para el guión ..
Si usted tiene file1.sql
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 indica que "col2" ya existe, por lo que debería estar bien.
Para personas con menos experiencia en Oracle, podría ahorrarte algunos problemas si incluyes ambas partes en las comparaciones de nombres de tablas y columnas: 'lower (column_name) = lower ('mycol')' – mastaBlasta