Zawsze robię to, pisząc tutaj lub na StackOverflow, ponieważ WITH
- ponieważ słowo kluczowe jest przeciążone - poprzednie polecenie wymaga kończącego średnika. Jeśli wkleję przykładowy kod, który używa CTE, nieuchronnie jakiś użytkownik wklei go do swojego istniejącego kodu, a poprzednie oświadczenie nie będzie zawierało średnika. Więc kod się psuje i dostaję takie skargi, jak:
Twój kod się zepsuł! Otrzymałem ten komunikat o błędzie:
Incorrect syntax near 'WITH'
...
Chociaż chciałbym wierzyć, że ludzie stają się coraz lepsi w tym, że zawsze kończą swoje wypowiedzi średnikiem , wolałbym uprzedzić hałas i po prostu zawsze go uwzględniać. Niektórym się to nie podoba, ale <shrug />
. Możesz dołączyć tyle średników przed lub po prawidłowym wyciągu, ile chcesz. Jest to ważne:
;;;;SELECT 1;;;;;;;;;;;;SELECT 2;;;;;;;;SELECT 3;;;;;
Zatem nie ma żadnej szkody, że istnienie dodatkowego średnika przed stwierdzeniem, że z definicji tego wymaga. Jest to bezpieczniejsze, nawet jeśli nie jest tak ładne.
To musi być dziwnie sformułowane, aby uzyskać sens, ale „nie kończenie prawidłowego wyrażenia średnikiem” jest w rzeczywistości przestarzałe od SQL Server 2008. Tak więc, jak opisuję w blogu, odsyłam do powyższego, nawet w przypadkach, w których nie jest wymagane obejście błędu, powinno być stosowane wszędzie tam, gdzie jest ważne. Możesz to zobaczyć tutaj:
http://msdn.microsoft.com/en-us/library/ms143729.aspx
(Wyszukaj na ostatniej stronie „średnik”)
Oczywiście nie byłby to SQL Server, gdyby nie było wyjątków. Spróbuj tego:
BEGIN TRY;
SELECT 1/1;
END TRY;
BEGIN CATCH;
SELECT 1/1;
END CATCH;
Nie jest to jedyny wyjątek od reguły, ale najbardziej nieintuicyjny.