2017-06-20 4 views
0

Ich habe eine Datenbank mit NBA-Player-Statistiken erstellt, um SQL und SSRS zu üben. Ich bin neu in der Arbeit mit gespeicherten Prozeduren, aber ich habe die folgende Prozedur erstellt, die (ich denke) es erlauben soll, das Team und die Anzahl der Minuten anzugeben.Neue Daten können nicht in SQL-Abfrage abgerufen werden

CREATE PROCEDURE extrapstats 
--Declare variables for the team and the amount of minutes to use in --calculations 
    @team NCHAR OUTPUT, 
    @minutes DECIMAL OUTPUT 

AS 
BEGIN 

SELECT p.Fname + ' ' + p.Lname AS Player_Name, 
     p.Position, 
     --Creates averages based on the number of minutes per game specified in @minutes 
     (SUM(plg.PTS)/SUM(plg.MP))*@minutes AS PTS, 
     (SUM(plg.TRB)/SUM(plg.MP))*@minutes AS TRB, 
     (SUM(plg.AST)/SUM(plg.MP))*@minutes AS AST, 
     (SUM(plg.BLK)/SUM(plg.MP))*@minutes AS BLK, 
     (SUM(plg.STL)/SUM(plg.MP))*@minutes AS STL,  
     (SUM(plg.TOV)/SUM(plg.MP))*@minutes AS TOV, 
     (SUM(plg.FT)/SUM(plg.MP))*@minutes AS FTs, 
     SUM(plg.FT)/SUM(plg.FTA) AS FT_Percentage, 
     (SUM(plg.FG)/SUM(plg.MP))*@minutes AS FGs, 
     SUM(FG)/SUM(FGA) as Field_Percentage, 
     (SUM(plg.[3P])/SUM(plg.MP))*@minutes AS Threes, 
     SUM([3P])/SUM([3PA]) AS Three_Point_Percentage 
FROM PlayerGameLog plg 
--Joins the Players and PlayerGameLog tables 
INNER JOIN Players p 
ON p.PlayerID = plg.PlayerID 
    AND TeamID = @team 
GROUP BY p.Fname, p.Lname, p.Position, p.TeamID 
ORDER BY PTS DESC 

END; 

Ich habe dann versucht unten durch Ausführen der Abfrage die SP zu verwenden:

DECLARE @team NCHAR, 
     @minutes DECIMAL 

EXECUTE extrapstats @team = 'OKC', @minutes = 35 
SELECT * 

Wenn ich das tun, begegne ich diese Meldung:

Msg 263, Level 16, State 1, Line 5 
Must specify table to select from. 

ich verschiedene Varianten ausprobiert habe davon, aber nichts hat funktioniert. Ich dachte, der SP spezifiziert die Tabellen, aus denen die Daten ausgewählt werden sollen.

Irgendwelche Ideen?

+0

Sie haben dort eine Anweisung 'SELECT *' dangling. Sie haben keine Tabelle zur Auswahl angegeben. Daher die Fehlermeldung. –

Antwort

0

Das Deklarieren der gespeicherten Prozedurparameter mit der OUTPUT-Klausel bedeutet, dass die Werte von der gespeicherten Prozedur an die aufrufende Funktion zurückgegeben werden. Wenn Sie sie als Eingabeparameter verwenden, entfernen Sie die OUTPUT-Klausel aus beiden Eingabeparametern und versuchen Sie es.

Entfernen Sie auch die SELECT * in Ihrer Anweisung ausführen, es ist nicht erforderlich, die gespeicherte Prozedur wird die Daten zurückgeben, da es die Select-Anweisung hat.

+0

Das war ein Neuling auf meiner Seite. Vielen Dank. – kredeker54

Verwandte Themen