Dlaczego „SQL” jest barwiony jako słowo zarezerwowane dla funkcji w SQL Server?

14

W SSMS 2208 identyfikator „Lookup” ma kolor hot pink, tak jakby był funkcją (ten sam kolor co, powiedzmy, „Power” lub „Convert”). Dlaczego?

Nie mogę go znaleźć na oficjalnej liście zastrzeżonych słów . Wyszukiwanie w Internecie wydaje się bezużyteczne, ponieważ istnieje bardzo dużo terminów „wyszukiwania”, które nie mają nic wspólnego z moim pytaniem.

ErikE
źródło
1
Mogę tylko wymyślić funkcję SSRS Lookup () ( msdn.microsoft.com/en-us/library/ee210531.aspx ). Dobre pytanie. +1
Thomas Stringer
@Shark miły znaleźć, ale spodziewałbym inne funkcje nie podążać podobne zasady, ale nie podkreślają w SSMS, na przykład COUNTDISTINCT, COUNTROWSi RUNNINGVALUEpowinny działać w ten sam sposób.
Aaron Bertrand

Odpowiedzi:

14

Na początku myślałem, że pochodzi z Sybase (stąd oczywiście SQL Server), który ma funkcję wyszukiwania , ale jest to związane z PowerBuilder. A potem sprawdziłem SQL Server 2000 i nie świeci on na różowo w Query Analyzer ...

wprowadź opis zdjęcia tutaj

... jeśli to byłaby spuścizna po Sybase, spodziewałbym się, że będzie cały czas na liście słów oznaczonych kolorami. Przypuszczam, że możliwe jest, że plik gramatyki został zaktualizowany i że został pominięty „przez pomyłkę” w 2000 roku, ale wątpię w to. Bardziej prawdopodobne jest, że jest kolorowy, ponieważ jest wymieniony w usłudze językowej T-SQL jako słowo przyszłej zgodności lub został wrzucony do usługi językowej w oczekiwaniu na użycie. (Czekam na oficjalne potwierdzenie tego i podzielę się, co mogę).

Kilka innych zabawnych przykładów ( narzekałem na kilka z nich w Connect w 2008 roku , ale zostało zamknięte jako Won't Fix) niewłaściwego podświetlania słów, których również nie ma na cytowanej liście:

  • Domains świeci na zielono
  • Description świeci na niebiesko
  • Server świeci na niebiesko
  • Instead świeci na niebiesko
  • RC2i RC4świeci na niebiesko

wprowadź opis zdjęcia tutaj

W tym czasie nie przechwyciłem Lookupani Insteadprzykładów, i jestem pewien, że są też inne. Chociaż zgaduję, że dokument, na który patrzysz, nie jest tak aktualny, jak mógłby być; przynajmniej INSTEADpowinien znajdować się na tej liście, ponieważ jest teraz częścią T-SQL (ponieważ wprowadzono wyzwalacze INSTEAD OF). Założę się, że do SQL Server 2012 dodano co najmniej 20 innych słów kluczowych, ale nie ma ich również na tej liście. Szybkie skanowanie istnieją jednak pewne wyjątki, które powinny tam być: OFFSET, IIF, FORMAT, itd.

Kolejny przykład, który może Cię zainteresować; spróbuj wpisać słowo jak INSTEADw ciągu, ale we własnej linii. Działa to dobrze, ale nie wygląda na to, że:

SELECT 'foo 
INSTEAD
';

wprowadź opis zdjęcia tutaj

(To dzięki uprzejmości błędu zgłoszonego przez @JonSeigel .)

Prawdopodobnie napisałem i skomentowałem kilka innych błędów związanych z podświetlaniem składni Management Studio ; to z pewnością nie jest idealne. Doceniam to, że chcesz wiedzieć, dlaczego, ale możemy się ostatecznie nie dowiedzieć. Jak widać z wielu z tych elementów Connect, zwykle ignorują / odraczają je lub naprawiają je bez większego wyjaśnienia.

Aaron Bertrand
źródło
2
Zapomniałem o nich! Jakiś czas temu natknąłem się na twoje zgłoszenie Connect.
ErikE
Nawiasem mówiąc, rodzaj „INSTEAD” ma sens, ponieważ mogą być wyzwalacze INSTEAD OF UPDATE. Ale to nie jest słowo zastrzeżone ...
ErikE
@ErikE Podkreśliłem „zamiast”, ponieważ jest to słowo kluczowe, po prostu nie ma go na liście (kolejny strzęp dowodu, że jest on znacznie nieaktualny).
Aaron Bertrand
„witryna” jest podświetlona na niebiesko i nie ma jej na liście zastrzeżonych słów kluczowych
Simon D