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:
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.
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
Brak komentarzy - bądź pierwszy