J'ai créé une base de données avec des statistiques de lecteur NBA juste pour pratiquer SQL et SSRS. Je suis nouveau à travailler avec des procédures stockées, mais j'ai créé la procédure suivante qui devrait (je pense) me permettre de spécifier l'équipe et le nombre de minutes.Impossible de récupérer de nouvelles données dans une requête SQL
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;
J'ai ensuite essayé d'utiliser le SP en exécutant la requête suivante:
DECLARE @team NCHAR,
@minutes DECIMAL
EXECUTE extrapstats @team = 'OKC', @minutes = 35
SELECT *
Quand je fais cela, je rencontre ce message:
Msg 263, Level 16, State 1, Line 5
Must specify table to select from.
J'ai essayé différentes variations de cela, mais rien n'a fonctionné. Je pensais que le SP spécifiait les tables à partir desquelles sélectionner les données.
Des idées?
Vous avez une instruction 'SELECT *' qui pend à cet endroit. Vous n'avez pas spécifié de table à sélectionner. D'où le message d'erreur. –