Строка условного отбрасывания в коде ниже не работает. Он выполняется без ошибок, но затем следующие ошибки строки, указывающие идентификатор объекта, уже существуют, поэтому он фактически не отбрасывает таблицу.Временная таблица не будет выпадать
Любые идеи?
Я подключаюсь к базе данных MS SQL Server 2005 через OLE DB (поставщик SQLOLEDB) с использованием ADO.
'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
Кроме того, я пытался избежать имени таблицы, используя одиночные кавычки или двойные кавычки но всегда тот же результат (он не падает). Я обнаружил, что квадратные скобки вызывают синтаксическую ошибку.
Видимо, так как ваш вопрос помечен как дубликат, я не могу добавить ответ, но ответ прост, что вы пытаетесь сбросить сеанс локального временную таблицы (один # -prefix, например #tmp) , в отличие от глобальной таблицы temp (два # -prefix, например ## tmp), и это две совершенно разные вещи. –