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
chcę dodać kolumnę, która będzie połączeniem dwóch innych istniejących już kolumn, jak powinien wyglądać scrypt?
Przydałyby się jeszcze 2 rzeczy do cz. 3 i byłoby superanckie.
1. Na starcie sortuje wg jakiejś kolumny i tam jest już strzałeczka. Widok takiej strzałeczki daje znać użytkownikowi, że taką tabele można sortować, a na razie pojawia się ona tylko po kliknięciu.
2. Uwzględnienie polskich znaków, bo np. przy sortowaniu Nazwisk i Imion jest to bardzo uciążliwe.
Ogólnie bardzo fajnie i prosto.
PS. Jest ten artykuł z jQuery już dostępny.
bardo ciekawe , można dzięki takim wpisom dostrzec wędkę..
Bardzo dziękuję za jasne tłumaczenie z dobrze dobranym przykładem!