Pourquoi «Lookup» est-il coloré en tant que mot réservé à une fonction dans SQL Server?

14

Dans SSMS 2208, l'identifiant "Lookup" est coloré en rose vif comme s'il s'agissait d'une fonction (même couleur que, par exemple, "Power" ou "Convert"). Pourquoi?

Je ne le trouve pas dans la liste officielle des mots réservés . Les recherches sur le Web semblent inutiles car il existe énormément de termes de "recherche" qui n'ont rien à voir avec ma question.

ErikE
la source
1
Je ne pense qu'à la fonction SSRS Lookup () ( msdn.microsoft.com/en-us/library/ee210531.aspx ). Bonne question. +1
Thomas Stringer
@Shark nice find, mais je m'attendrais à ce que d'autres fonctions suivent des règles similaires, mais elles ne sont pas mises en évidence dans SSMS, par exemple COUNTDISTINCT, COUNTROWSet RUNNINGVALUEdevraient fonctionner de la même manière.
Aaron Bertrand

Réponses:

14

Au début, je pensais que cela venait de Sybase (qui est bien sûr l'origine de SQL Server), qui a une fonction de recherche , mais c'est lié à PowerBuilder. Et puis j'ai vérifié SQL Server 2000 et il ne s'allume pas en rose dans l'Analyseur de requêtes ...

entrez la description de l'image ici

... si c'était un héritage de Sybase, je me serais attendu à ce qu'il figure tout au long de la liste des mots codés par couleur. Il est possible, je suppose, que le fichier de grammaire ait été mis à jour et qu'il ait été omis "par erreur" en 2000, mais j'en doute. Il est beaucoup plus probable qu'il soit coloré car il est répertorié dans le service de langue T-SQL en tant que futur mot de compatibilité, ou il a été jeté dans le service de langue en prévision de son utilisation. (J'attends la confirmation officielle de cela, et je partagerai ce que je peux.)

Quelques autres exemples amusants ( je me suis plaint de quelques-uns de ceux-ci sur Connect en 2008 , mais il n'a pas été corrigé) de surlignage inapproprié de mots qui ne figurent pas non plus sur la liste que vous citez:

  • Domains s'allume en vert
  • Description s'allume en bleu
  • Server s'allume en bleu
  • Instead s'allume en bleu
  • RC2et RC4s'allume en bleu

entrez la description de l'image ici

À l'époque, je n'ai pas capturé le Lookupou les Insteadexemples, et je suis sûr qu'il y en a aussi d'autres. Bien que je suppose que le document que vous regardez n'est pas aussi à jour qu'il pourrait l'être non plus; INSTEADdevrait à tout le moins figurer sur cette liste car il fait désormais partie de T-SQL (depuis l'introduction des déclencheurs INSTEAD OF). Je parie qu'il y a au moins 20 autres mots clés qui ont été ajoutés pour SQL Server 2012 mais qui ne figurent pas sur cette liste également. Numérisation rapidement il y a quelques exclusions notables qui devraient être là: OFFSET, IIF, FORMAT, etc.

Un autre exemple que vous pourriez trouver intéressant; essayez de mettre un mot comme INSTEADdans une chaîne mais sur sa propre ligne. Cela fonctionne bien, mais il ne semble pas:

SELECT 'foo 
INSTEAD
';

entrez la description de l'image ici

(Celui-ci avec l'aimable autorisation d' un bogue déposé par @JonSeigel .)

J'ai probablement déposé et commenté quelques dizaines d'autres bogues contre la mise en évidence de la syntaxe de Management Studio ; ce n'est certainement pas parfait. J'apprécie que vous vouliez savoir pourquoi, mais nous ne le saurons peut-être pas en fin de compte. Comme vous pouvez le voir sur un grand nombre de ces éléments Connect, ils les ignorent / reportent généralement ou les corrigent sans trop d'explications.

Aaron Bertrand
la source
2
J'ai oublié ça! J'ai parcouru votre soumission Connect il y a quelque temps.
ErikE
Soit dit en passant, "INSTEAD" est logique car les déclencheurs peuvent l'être INSTEAD OF UPDATE. Mais ce n'est pas un mot réservé ...
ErikE
@ErikE J'ai mis en surbrillance "à la place" car il s'agit d' un mot-clé, tout simplement pas sur la liste (un autre morceau de preuve qu'il est largement obsolète).
Aaron Bertrand
"site" est surligné en bleu et n'est pas dans la liste des mots clés réservés
Simon D