2013-11-21 32 views
1

我想用##TempTable摆脱Oracle数据库值在我的SQL Server查询,但总是出现错误,错误说得到错误与##不是Temptable

##TempTable is Invalid object name '##TempTable '. 

这里就是我使用##TempTable

代码
SET @sQuery = 'SELECT * INTO ##TempTable 
FROM OPENQUERY(ITCP,''SELECT * FROM DB.WINFO WHERE SCH_DATE = '''''+ 
CONVERT(VARCHAR(10),@DDATE,121) +''''''') A' EXEC(@sQuery) 

我很困惑,我是否应该声明查询创建##TempTable像创建表一样或通过该查询临时表应该自动创建?因为我总是得到错误

+0

如果您事先创建## TempTable并执行'INSERT INTO ## TempTable SELECT * ...',它会起作用吗? –

+0

是的,它的工作原理,但我怕以后我不知道ora数据库的结构我不能创建表第一,是否有可能做这样的查询插入到## sometable从openquery? – Sabilv

+0

只是为了确认 - 你在上面的'EXEC(@sQuery)'或其他地方出错了? –

回答

0

我认为问题是您的临时表正在一个范围内创建,而您的动态查询正在另一个范围内执行。

有几件事情尝试:

  1. 创建##不是Temptable第一,然后填充它在你的动态查询。

  2. 尝试前缀tempdb的表名。(这样的tempdb .. ##不是Temptable)。

  3. 使用持久表(而不是临时表)。

希望这会有所帮助。

+0

嗯我明白了,所以它更好地创建类似于tempdb的数据库,只需从oracle中删除值以防止出现这些错误,并让我的主数据库从任何临时表中清除。 – Sabilv

+0

其实##是一个全局临时表,应在所有范围内可见。哦,尤其是在创作过程中 –