Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ALTER TABLE MODIFY pod warunkiem
Gabriel
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 13.11.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Na początek się przywitam. Hello. Mój pierwszy post na forum.

  1. [/b]ALTER TABLE schemat.nazwa_tablicy
  2. MODIFY (nazwa_kolumny NULL);
  3. [b]


Bardzo proste Nie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale jeśli mam zestaw wielu wielu skryptów. I co jakiś czas aktualizuję bazę. Nie wiem czy dany skrypt został już wykonany czy nie. chciałbym napisać jakiegoś if then tylko tu właśnie się pojawia problem JAK ? Ma ktoś może jakiś pomysł ?

If nazwa_kolumny is not null then alter ....

--------------------------------------------------------------------------
Problem rozwiązany (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
  1. [/b]DECLARE
  2. cnt VARCHAR2(1);
  3. BEGIN SELECT NULLABLE INTO cnt FROM USER_TAB_COLS WHERE table_name = 'tab_name' AND column_name = 'col_name';
  4. IF (cnt = 'N')
  5. THEN
  6. BEGIN EXECUTE IMMEDIATE 'ALTER TABLE tab_name MODIFY (col_name[b] NULL)';
  7. END;
  8. END IF;
  9. END;
  10. /
  11. [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:

  1. begin execute immediate 'alter table po_products add concat char(1)';
  2. exception
  3. when others then
  4. /* OK if ORA-01430: column being added already exists in table */
  5. IF instr ( SQLERRM, 'ORA-01430' ) != 0 then NULL;
  6. else raise_application_error ( -20000, SQLERRM ); end IF;
  7. end;
  8. /


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

Ten post edytował Gabriel 13.11.2008, 09:22:40
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 21:34