[/b]ALTER TABLE schemat.nazwa_tablicy MODIFY (nazwa_kolumny NULL); [b]
Bardzo proste Nie

If nazwa_kolumny is not null then alter ....
--------------------------------------------------------------------------
Problem rozwiązany

[/b]DECLARE cnt VARCHAR2(1); BEGIN SELECT NULLABLE INTO cnt FROM USER_TAB_COLS WHERE table_name = 'tab_name' AND column_name = 'col_name'; IF (cnt = 'N') THEN BEGIN EXECUTE IMMEDIATE 'ALTER TABLE tab_name MODIFY (col_name[b] NULL)'; END; END IF; END; / [b]
[/b]--------------------------------------------------------------------------
Wykonywanie wile razy tych samych skryptów - ciąg dalszy. A co z dodawaniem kolumny która została już dodana ?
Znalazłem gdzieś w sieci to:
begin execute immediate 'alter table po_products add concat char(1)'; exception when others then /* OK if ORA-01430: column being added already exists in table */ IF instr ( SQLERRM, 'ORA-01430' ) != 0 then NULL; else raise_application_error ( -20000, SQLERRM ); end IF; end; /
i właściwie działa ale czy nie ma jakiś warunków na to czy wogóle wykonywać dane zapytanie, obsługa exception chyba nie jest zbyt profesjonalne ?
--------------------------------------------------------------------------
zapewne rozwiązanie będzie analogicznie jak w pierwszym z problemów