下面代码中的条件放置表行似乎不起作用。它执行没有错误,但是下一行错误说对象 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 临时名称是在运行时使用格式创建的,#[WSID]TEMP[NOW]
并被截断为 116 个字符,例如:TEMPTABLE=#LOKSPEC1TEMP141031155408
此外,我尝试使用单引号或双引号转义表名,但结果始终相同(它不会丢失)。我发现方括号会引发语法错误。