2008-11-24 6 views
0

Je suis actuellement en utilisant SQL Server Management Studio (Ver 9.00.3042.00) et cliquez sur le "Nouvelle requête" et a écrit le code suivant:comportement studio de gestion Bizarre SQL Server

Select 
    colA, 
    colB, 
    colC 
    colD 
From 
    table1 

Lorsque je clique sur le parse (case à cocher) pour valider l'instruction SQL, elle indique "Command (s) completed successfully". Est-ce pas le bouton d'analyse syntaxique supposé attraper ces erreurs simples ...

Quelqu'un at-il vécu ce type de comportement de la direction Studio? Ce juste commencé à se produire cette semaine ....

Répondre

14

C'est parce que c'est valide SQL. Vous utilisez alias colC avec le nom colD. C'est la même chose que taper:

colC as colD 

Edit: Pour ce que ça vaut la peine, c'est l'une des raisons pour lesquelles les gens diront que vous devez mettre les virgules au début de la ligne dans des cas comme celui-ci. Il est beaucoup plus facile de repérer gotchas comme celui-ci lorsque le code est formaté en tant que tel:

Select 
    colA 
    , colB 
    , colC 
    colD 
From 
    table1 
+0

Lorsque J'essaie d'analyser une instruction select qui manquait une virgule dans une procédure stockée est jetterait une « syntaxe incorrecte près colC » –

+0

C'est parce que les paramètres de la procédure stockée ne prennent pas en charge ce type d'aliasing, car ils ne sont pas des colonnes. Cependant, les colonnes SELECT le font. –

+0

@Soren - Je viens d'essayer le même comportement dans un modèle de procédure stockée et il a passé le contrôle d'analyse syntaxique. –

0

Après un petit jeu autour, il lance la « syntaxe incorrecte près » sur le code suivant snippets

Select  
    colA,  
    colB  
    colC  
    colD 
From  
    table1 

Select  
    colA,  
    colB,  
    colC,  
    colD, 
From  
    table1 
+0

En outre, il devrait - dans votre message original, vous avez créé un alias de colonne. Dans le top ici, cela ne jouerait pas car vous avez deux jetons après colB (colC, colD). Dans votre exemple, en bas, il y a une erreur de syntaxe dans une véritable qu'il n'y a pas de jeton de sélection valide après « COLD » ... @Jeromy Irvine est juste. :) –

Questions connexes