SQL Server存储过程返回太多行

时间:2017-02-08 21:09:23

标签: sql-server tsql

使用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 '

procedure results

2 个答案:

答案 0 :(得分:4)

啊,我想我看到了问题。

你在你的proc中调用你的proc。尝试进入programmibilty / Stored Procedures,右键单击并编辑proc,删除底部的exec get_details行并应用。

答案 1 :(得分:1)

如果您提供的代码是整个存储过程,那么它不会自行清理并且您正在加载包含大量重复数据的临时表。每次运行存储过程都会为结果添加另一组。