sql >> Databáze >  >> RDS >> Oracle

Jak zkontrolovat, zda sloupec existuje, než jej přidáte do existující tabulky v PL/SQL?

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.



  1. Jak předat heslo do pg_dump?

  2. Jak získat informace o typu definovaném uživatelem?

  3. Vytvořte uživatele MySQL v systému Linux pomocí příkazového řádku

  4. Sloučit tabulku a protokol změn do zobrazení v PostgreSQL