Php 我能';t从存储过程中获取临时表数据
我在sql server中创建的存储过程的结构如下Php 我能';t从存储过程中获取临时表数据,php,sql-server,Php,Sql Server,我在sql server中创建的存储过程的结构如下 ALTER PROCEDURE [dbo].[list_final_player_report] -- Add the parameters for the stored procedure here @teamid int AS BEGIN CREATE TABLE #TempTable ( playername varchar(50),
ALTER PROCEDURE [dbo].[list_final_player_report]
-- Add the parameters for the stored procedure here
@teamid int
AS
BEGIN
CREATE TABLE #TempTable (
playername varchar(50),
RANK_in_speedladdar INT,
rank_in_120s int,
rank_in_cone int,
rank_in_beep int,
rank_in_cooper int,
rank_in_pushups int,
rank_in_situp int,
rank_in_pullup int,
rank_in_40s int,
rank_in_pushopbattle int,
rank_in_vertical_jump int,
rank_in_shuttle int
)
DECLARE @playerid int
DECLARE @firstname nvarchar(10)
-- Define the cursor
DECLARE cursor1 cursor for
select Players.PlayerID as PlayerID , players.firstname from Players where Teamid=@teamid
-- We should open the cursor
OPEN cursor1
-- We need to Fetch the rows into @EmpId variable
FETCH cursor1 into @playerid,@firstname
--Looping
WHILE(@@fetch_status=0)
BEGIN
insert into #TempTable
values(@firstname,
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =1 and ChallengeStats.PlayerID=@playerid ),
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =2 and ChallengeStats.PlayerID=@playerid ),
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =3 and ChallengeStats.PlayerID=@playerid ) ,
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =4 and ChallengeStats.PlayerID=@playerid ) ,
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =5 and ChallengeStats.PlayerID=@playerid ) ,
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =6 and ChallengeStats.PlayerID=@playerid ) ,
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =7 and ChallengeStats.PlayerID=@playerid ) ,
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =8 and ChallengeStats.PlayerID=@playerid ) ,
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =9 and ChallengeStats.PlayerID=@playerid ) ,
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =10 and ChallengeStats.PlayerID=@playerid ) ,
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =11 and ChallengeStats.PlayerID=@playerid ) ,
(select (sum(Total))/count(PlayerID) from ChallengeStats WHERE ChallengeStats.ChallengeID =12 and ChallengeStats.PlayerID=@playerid )
)
FETCH cursor1 into @playerid,@firstname
END
close cursor1
deallocate cursor1
select * from #TempTable
END
此sp完全可以在sqlserver中执行
但是现在的问题是如何将这个临时表数据放入php结果集,而不是使用临时表,为什么不使用表变量呢。 为了实现这一点,您不必修改太多代码
DECLARE @TempTable TABLE (
playername varchar(50),
RANK_in_speedladdar INT,
rank_in_120s int,
rank_in_cone int,
rank_in_beep int,
rank_in_cooper int,
rank_in_pushups int,
rank_in_situp int,
rank_in_pullup int,
rank_in_40s int,
rank_in_pushopbattle int,
rank_in_vertical_jump int,
rank_in_shuttle int
)
临时表仅在其使用范围内有效,这可能导致您的问题。尝试上面的方法,您应该会得到不同的结果。但它在sql server中工作得非常好。..probl正在获取/显示临时表。这很公平,但在它将数据返回到调用页之前,您似乎正在失去作用域。使用VARABLE表应该可以为您解决这个问题……您可以向您展示php代码吗?