从Excel运行的SQL不能使用临时表
我已经能够创build从Excel到SQL Server的数据连接,并成功地执行了许多SQL查询。 但是如果包含一个临时表,我不能得到任何TSQL的工作。 例如:
select * into #t from compass3.dbo.freq select * from #t where freq_id>2
(在这种情况下显然没有必要使用#t:我只是给出了最简单的例子。)在SSMS中这个工作正常,但是当通过Excel执行时,我得到错误消息“我们无法刷新连接”audbbicube '表'离子查询1'可能不存在。“
在其他一些SOpost中,人们build议增加set nocount on
,但在这种情况下没有什么区别。
我想添加到上面的答案 – 只是在查询顶部使用SET NOCOUNT ON
,与常规临时表SELECT name INTO #Names FROM Employee
应该工作。
这里不需要表variables。
您也可以添加SET ANSI_WARNINGS OFF
以避免像“NULL值被聚合消除”的消息。
以下似乎工作…
set nocount on declare @t table(fid int) -- I'm sure I could add the rest of the columns if I wanted to insert @t select freq_id from compass3.dbo.freq select * from @t where fid>2
所以只要我打开nocount
并使用一个表variables而不是一个临时表,我可以实现我所需要的。
我可以确认SET NOCOUNT ON
解决了EXCEL SQL Query中 #temp表的问题。
这不工作:
select 'a' a, 'b' b into #temp select * from #temp drop table #temp
但是,这完美的作品:
SET NOCOUNT ON select 'a' a, 'b' b into #temp select * from #temp drop table #temp