如何从存储过程返回临时表

dan*_*ani 15 sql-server stored-procedures temp-tables

CREATE PROCEDURE [test].[proc]
@ConfiguredContentId int,
@NumberOfGames int
AS
BEGIN
 SET NOCOUNT ON
 RETURN 
 @WunNumbers TABLE (WinNumb int)

    INSERT INTO @WunNumbers (WinNumb)
 SELECT TOP (@NumberOfGames) WinningNumber
 FROM [Game].[Game] g
 JOIN [Game].[RouletteResult] AS rr ON g.[Id] = rr.[gameId]
 WHERE g.[ConfiguredContentId] = @ConfiguredContentId
 ORDER BY g.[Stoptime] DESC

 SELECT WinNumb, COUNT (WinNumb) AS "Count"
 FROM @WunNumbers wn
 GROUP BY wn.[WinNumb]
END
GO
Run Code Online (Sandbox Code Playgroud)

此存储过程从第一个select语句返回值,但我希望返回第二个select语句中的值.表@WunNumbers是一个临时表.

有任何想法吗???

ada*_*ost 27

看看这段代码,

CREATE PROCEDURE Test

AS
    DECLARE @tab table (no int, name varchar(30))

    insert @tab  select eno,ename from emp  

    select * from @tab
RETURN
Run Code Online (Sandbox Code Playgroud)

  • 如果我执行`EXECUTE T​​est`,我该如何访问@tab? (5认同)
  • 它返回select语句的结果(实际问题),在这种情况下,恰好是本地表变量@tab的内容. (3认同)

Joh*_*som 6

您使用的是哪个版本的SQL Server?在SQL Server 2008中,您可以使用表参数和表类型.

另一种方法是从用户定义的函数返回一个表变量,但我不是这个方法的忠实粉丝.

你可以在这里找到一个例子