2016-08-02 12 views
0

Ich habe eine gespeicherte Prozedur geschrieben, die eine group- und order by-Klausel enthält, die sich von den vorherigen Prozeduren, die ich erstellt habe, unterscheidet.Wie kann ich die Syntax meiner Stored Procedure korrigieren, die Gruppen- und Bestellklauseln enthält?

gedebuggt ich den Fehler

falsche Syntax in der Nähe ''

aber vorher gespeicherten Prozeduren abgehend. Ich setze die Kommata nach jedem Spalten- und Tabellennamen, der die Syntax zur Ausführung nicht korrigiert hat.

Gibt es eine Syntaxregel, die beim Erstellen einer Stored Procedure in Bezug auf die Platzierung von Kommas zu beachten ist?

Dies ist die gespeicherte Beispielprozedur, die Klauseln enthalten, dass doesn't execute due to syntax error um Kommas in SQL Server Management Studio:

CREATE PROCEDURE [dbo].[GetStatusByOwner] 
    @p_Item_Owner VARCHAR(80) 
AS 
BEGIN  
    SELECT 
     [Item Owner], 
     [Business Name], 
     COUNT([Business Name]) 
    FROM  
     ,[TestDB].[dbo].[Status] 
    GROUP BY 
     ,[Item Owner], [Business Name] 
    ORDER BY 
     ,[Item Owner] 
    FROM  
     ,[dbo].[Status] 
    WHERE  
     ,[Item Owner] = @p_Item_Owner 
END 
+0

Beachten Sie, dass Sie verschiedene Schreibweisen für 'Item_Owner' verwenden ... – Shnugo

Antwort

2

Es gibt viele Fehler im Code ...

wie dies auch sein mag :

CREATE PROCEDURE [dbo].[GetStatusByOwner] 
    @p_Item_Owner VARCHAR(80) 
AS 

    BEGIN  

    SELECT 
      [Item Owner] 
     ,[Business Name] 
     ,Count ([Business Name]) 
FROM  [TestDB].[dbo].[Status] 
WHERE [Item_Owner][email protected]_Item_Owner 
GROUP BY 
     [Item Owner] 
     ,[Business Name] 
ORDER BY [Item Owner] 
END 

Einige Erklärung:

Das Komma verwendet wird, um mehrere Vorkommen des gleichen Typs wie

SELECT col1, col2, col3 FROM ... 
  • Ihr Beispiel hat zwei mal FROM das ist nicht erlaubt in einer geraden SELECT ...
  • ORDER BY muss die Trennung letzte
  • GROUP BY muss die letzte vor ORDER BY sein (es sei denn, ein HAVING ist)
  • WHERE ist direkt nach FROM (es sei denn, es gibt JOIN s oder APPLY s

Und noch ein Punkt: Es war viel besser, eine VIEW oder eine Inline-Funktion zu verwenden, wenn Sie nichts mehr tun, als zu lesen. Eine gespeicherte Prozedur bedeutet zu tun etwas ...