我在SQL Server 2008中有一个名为myStoredProcedure
的存储过程,包括如下代码块:
...
declare @tempTable table
(
Id int,
Name varchar(100),
Category varchar(50),
Volume int
)
while @startTime<@endTime
begin
insert into @tempTable
EXEC R52_Calculations @param1, @param2, @param3
set @startTime = DATEADD(YEAR,1,@startTime)
end
select * from @tempTable
通过这种方式,存储过程运行良好。我可以在SSRS 2008中连接到此存储过程的表,而不会发出任何警告或错误。但是,当我将@tempTable
变量更改为#tempTable
时,我尝试将SSRS 2008上的表连接到更新的存储过程时收到TimeOut错误,即使存储过程工作正常再次在SQL Server中。
...
create table #tempTable
(
Id int,
Name varchar(100),
Category varchar(50),
Volume int
)
while @startTime<@endTime
begin
insert into #tempTable
EXEC R52_Calculations @param1, @param2, @param3
set @startTime = DATEADD(YEAR,1,@startTime)
end
select * from #tempTable
这是错误:
超时已过期。完成之前已经过了超时时间 操作或服务器没有响应。警告:空值是 通过聚合或其他SET操作消除。
更多要点:
当我删除&#34;而#34;循环并只执行一次该过程,当我使用#tempTable时没有发生错误。
如果我使用@temptable(变量1),则根本不会发生错误。
请注意,两个查询在SQL Server中都运行正常,当我尝试将SSRS 2008上的表连接到存储过程时发生错误 。
我找不到#temptable导致错误的原因。任何线索或帮助,我将不胜感激。感谢。