W tym tygodniu debatowaliśmy w mojej firmie na temat tego, jak powinniśmy pisać nasze skrypty SQL.
Kontekst: Nasza baza danych to Oracle 10g (wkrótce zostanie zaktualizowana do wersji 11). Nasz zespół DBA używa SQLPlus do wdrażania naszych skryptów do produkcji.
Teraz mieliśmy niedawno wdrożenie, które nie powiodło się, ponieważ użyło zarówno średnika, jak i ukośnika ( /
). Średnik znajdował się na końcu każdej instrukcji, a ukośnik między instrukcjami.
alter table foo.bar drop constraint bar1;
/
alter table foo.can drop constraint can1;
/
Niektóre wyzwalacze zostały dodane później w skrypcie, niektóre widoki zostały utworzone, a także niektóre procedury składowane. Posiadanie zarówno polecenia, jak ;
i /
wywoływało dwukrotne uruchomienie każdej instrukcji, powodując błędy (szczególnie we wstawkach, które musiały być unikalne).
W SQL Developer tak się nie dzieje, w TOAD tak się nie dzieje. Jeśli uruchomisz pewne polecenia, nie będą one działać bez /
w nich.
W PL / SQL, jeśli masz podprogram (DECLARE, BEGIN, END) użyty średnik będzie traktowany jako część podprogramu, więc musisz użyć ukośnika.
Więc moje pytanie brzmi: jeśli twoją bazą danych jest Oracle, jaki jest właściwy sposób pisania skryptu SQL? Skoro wiesz, że Twoją bazą danych jest Oracle, czy zawsze powinieneś używać /
?
sqlterminator
, aby !
jeśli chcesz) i konwencja ta ma tendencję do być przestrzegane przez innych narzędzi. Jednak język PL / SQL używa średników jako obowiązkowego elementu składni.