使用SQL Server存储过程时,逻辑可以根据需要运行。但由于某种原因,它在运行程序时会返回50奇数的select语句(参见附件截图)
我本可以发誓我之前以类似的方式实施了解决方案,但显然没有。
当手动执行过程步骤(即不执行过程而是手动输入params然后运行脚本)时,它可以正常返回我需要的单个记录。
任何想法都将不胜感激!
提前致谢。
ALTER PROCEDURE [dbo].[Getdetails]
@Venue nvarchar(30),
@TeamA nvarchar(30),
@TeamB nvarchar(30)
AS
SELECT
*, hht + AHT AS HT, HFT + AFT AS FT
INTO
#temptable2
FROM
rugby
SELECT
*, FT-HT AS HT2
INTO
#temptable
FROM
#temptable2
----deal with match specific
SELECT
Venue, HomeTeam, AwayTeam,
AVG(HT) AS SPHT, AVG(FT) AS SPFT,
AVG(ht2) AS SP2HT, AVG(HT) AS GHT,
AVG(FT) AS GFT, AVG(ht2) AS G2ht,
AVG(HT) AS AHT, AVG(FT) AS AFT,
AVG(HT) AS BHT, AVG(FT) AS BFT, AVG(FT) AS AVGFT12
INTO
#tempSP
FROM
#tempTable
WHERE
#temptable.Venue LIKE @Venue
AND #temptable.HomeTeam LIKE @TeamA
AND #temptable.AwayTeam LIKE @TeamB
GROUP BY
#temptable.Venue, #temptable.HomeTeam, #temptable.AwayTeam
SELECT * FROM #tempSP
EXEC [dbo].[Getdetails] @Venue = ' Treviso', @TeamA = 'Glasgow ', @TeamB = 'Edinburgh '
答案 0 :(得分:4)
啊,我想我看到了问题。
你在你的proc中调用你的proc。尝试进入programmibilty / Stored Procedures,右键单击并编辑proc,删除底部的exec get_details行并应用。
答案 1 :(得分:1)
如果您提供的代码是整个存储过程,那么它不会自行清理并且您正在加载包含大量重复数据的临时表。每次运行存储过程都会为结果添加另一组。