Spis treści:

Kategoria:Oracle


Dodawanie kolumny do tabeli tylko wtedy, gdy nie istnieje - ORACLE

Jakiś czas temu opisywałem różne techniki radzenia sobie z tego typu problemem w bazie danych SQL Server (Dodawanie kolumny w SQL Server tylko wtedy, gdy nie istnieje). Los chciał, żebym napisał coś podobnego pod bazę danych ORACLE. Problem był podobny: niektórzy klienci kolumnę mają, niektórzy jej jeszcze nie mają. Co zrobić aby u żadnego klienta skrypt nie wyświetlił błędu? Próba dodania drugi raz takiej samej kolumny może skończyć się błędem o następującej treści:

SQL Error: ORA-01430: dodawana kolumna już istnieje w tabeli
01430. 00000 - "column being added already exists in table"

Skrypt, kod, czyli rozwiązanie

Żeby nie przedłużać, przedstawię gotowy skrypt. Wystarczy tylko skopiować i podmienić Tabela na własną nazwę tabeli, a Kolumna na własną nazwę kolumny. Żeby nie było nieporozumień, Tabela i Kolumna występują w skrypcie po dwa razy.

DECLARE cnt NUMBER;
BEGIN
  SELECT COUNT(*) INTO cnt FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'Tabela'
    AND COLUMN_NAME = 'Kolumna' AND ROWNUM<=1;
  IF cnt=0 THEN
    EXECUTE IMMEDIATE 'ALTER TABLE Tabela ADD Kolumna NUMBER(3,0) NULL';
  END IF;
END;

Kategoria:Oracle

, 2013-12-20

Brak komentarzy - bądź pierwszy

Dodaj komentarz
Wyślij
Ostatnie komentarze
Kalkulator, jak kalkulator, na pewno nie uwzględnia wielu rzeczy. Dla przykładu, jedziemy po asfalcie, ja na rowerze trial (14 kg, opony 29x2,6) a obok mnie kolega na szosie. Robimy te same kilometry w tym samym czasie i niby tyle samo wysiłku włożyliśmy? Druga kwestia, idę na owym rowerze pojeździć po lesie, podjazd, zjazd, piasek etc. To nie to samo co jazda po ścieżce.
Całkiem niezły kalkulator, porównując rezultaty z suunto 9 baro wartości są niemal identyczne z tymże byłoby jeszcze lepiej gdyby dodać prędkość wiatru i przewyższenia. Zdecydowanie najlepszy kalkulator w necie.
Super wyjasnione, czytalo sie bardzo lekko. Dzieki i pozdrawiam
puściłem benta i leci klockiem w pomieszczeniu, w którym kodujemy