【问题标题】:Cannot Retrieve New Data in SQL Query无法在 SQL 查询中检索新数据
【发布时间】:2017-11-23 04:39:47
【问题描述】:

我创建了一个包含 NBA 球员统计数据的数据库,只是为了练习 SQL 和 SSRS。我是使用存储过程的新手,但我创建了以下过程,应该(我认为)允许我指定团队和分钟数。

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;

然后我尝试通过执行以下查询来使用 SP:

DECLARE @team NCHAR,
        @minutes DECIMAL

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

当我这样做时,我会收到以下消息:

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

我尝试了不同的变体,但没有任何效果。我以为 SP 指定了从中选择数据的表。

有什么想法吗?

【问题讨论】:

  • 你有一个声明 SELECT * 悬在那里。您没有指定要从中选择的表。因此出现错误消息。

标签: sql-server tsql stored-procedures ssms


【解决方案1】:

使用 OUTPUT 子句声明存储过程参数意味着值将由存储过程返回给调用函数。但是,您将它们用作输入参数,请从两个输入参数中删除 OUTPUT 子句并尝试。

同时删除执行语句中的 SELECT *,这不是必需的,存储过程将返回数据,因为它具有选择语句。

【讨论】:

  • 这是我的新手。谢谢。
猜你喜欢
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
  • 2020-07-21
  • 1970-01-01
  • 2021-12-06
相关资源
最近更新 更多