下面的代码中的条件拖放表行似乎不起作用。它执行时没有错误,但是接下来的行错误说对象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