下面的代碼中的條件拖放錶行似乎不起作用。它執行時沒有錯誤,但是接下來的行錯誤說對象ID已經存在 - 所以它實際上並沒有丟掉表。臨時表不會丟棄
任何想法?
我使用ADO通過OLE DB(SQLOLEDB提供程序)連接到MS SQL Server 2005數據庫。
'Create a temporary table on the SQL Server and insert into it the info for the end part
With ADOcmA
Set .ActiveConnection = mObjCON
.CommandType = adCmdText
.CommandText = "IF OBJECT_ID('" & TEMPTABLE & "') IS NOT NULL DROP TABLE " & TEMPTABLE
.Execute
.CommandText = "CREATE TABLE " & TEMPTABLE & " (ITEM VARCHAR(255),DESCRIP1 CHAR(255),DESCRIP2 CHAR(255), LEV INT, SEQ VARCHAR(255), FLAG1 TINYINT, PRIMARYKEY INT IDENTITY(1,1) PRIMARY KEY,QTY_PER FLOAT)"
.Execute
.CommandText = "Insert Into " & TEMPTABLE & " (ITEM,DESCRIP1,DESCRIP2,LEV,SEQ,FLAG1,QTY_PER) select item_no,Item_desc_1,Item_desc_2,1,1,'1',1 FROM " & cstrMACtItem & " WHERE Item_no ='" & strITEM & "' "
.Execute
End With
FWIW的不是Temptable名稱在運行時使用的格式#[WSID]TEMP[NOW]
並截斷爲116個字符創建的,因此,例如:TEMPTABLE=#LOKSPEC1TEMP141031155408
而且,我試着用單引號或雙引號逃逸表名但總是相同的結果(它不會下降)。我發現方括號引發了一個語法錯誤。
顯然,因爲你的問題被標記爲重複,我不能添加一個答案,但答案很簡單,你想刪除一個會話的本地臨時表(一個# - 前綴,如#tmp) ,而不是全局臨時表(兩個#前綴,例如## tmp),這是兩個完全不同的東西。 – 2015-12-28 15:40:44