Všechna metadata o sloupcích v databázi Oracle jsou dostupná pomocí jednoho z následujících zobrazení.
user_tab_cols; -- Pro všechny tabulky vlastněné uživatelem
all_tab_cols; -- Pro všechny tabulky přístupné uživateli
dba_tab_cols; -- Pro všechny tabulky v databázi.
Pokud tedy hledáte sloupec jako ADD_TMS v tabulce SCOTT.EMP a přidejte sloupec pouze v případě, že neexistuje, kód PL/SQL by byl v tomto smyslu..
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;
/
Pokud to plánujete spustit jako skript (není součástí procedury), nejjednodušším způsobem by bylo zahrnout do skriptu příkaz alter a zobrazit chyby na konci skriptu, za předpokladu, že nemáte žádný začátek-konec pro skript..
Pokud máte soubor1.sql
alter table t1 add col1 date;
alter table t1 add col2 date;
alter table t1 add col3 date;
A col2 je přítomen, když je skript spuštěn, další dva sloupce by byly přidány do tabulky a protokol by ukázal chybu, že "col2" již existuje, takže byste měli být v pořádku.