2013-11-21 58 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

其實##是一個全局臨時表,應在所有範圍內可見。哦,尤其是在創作過程中 –